过滤和排序来自MBOX的邮件,以便存档和报告。

mboxfilter的Python项目详细描述


MBOX过滤器

mboxfilter 是一个python类,用于通过头字段筛选和排序邮箱(mbox格式)。还可以通过删除和导出附件来分解邮箱。您可能会发现mboxfilter对于存档和报告很有用。mboxfilter可以由命令行工具(也称为mboxfilter)调用,该工具与包一起提供。它充当类的包装器。在下面的示例中,MBOxFilter会将所有从Peter发送到Frank的电子邮件变为灰色:

$ mboxfilter --filter_from "peter@(?:work.com|home.org)" --filter_to "frank@" peter2012.mbox peter2013.mbox

所有筛选器都接受正则表达式。它们与对应头字段的值匹配。在上面的例子中,正则表达式peter@(?):work.com home.org)与存储在MBOX文件peter2012.mbox和peter2013.mobx中的每封电子邮件的from和frank@account to匹配。如果每个正则表达式都匹配,则会向结果集中添加一封电子邮件。默认情况下,结果集将打印为标准输出。此外,mboxfilter还可以在输出之前对结果集进行排序,如下例所示。Peter发送的所有电子邮件都按收件人的电子邮件地址和提交年份进行排序。

$ mboxfilter --filter_from "peter@home.org" --sort_to --sort_date %Y peter2012.mbox peter2013.mbox
$ ls
frank@home.org.2012.mbox
frank@home.org.2013.mbox
rosie@home.org.2012.mbox

排序操作生成不同的结果集,MBOxFilter将每个结果集写入自己的文件。一封电子邮件可能是多个结果集的成员。在上面的例子中,一封写给弗兰克和罗西的电子邮件出现在: rosie @ home org 2012 mbox frank @ home org 2012。 mbox 。排序操作拒绝选项,日期排序除外。它需要a 格式字符串 。在下面的示例中,MBOxFilter存档了Peter的邮箱:

$ mboxfilter --archive peter@home.org.mbox peter@work.com.mbox
$ ls
2012.mbox
2013.mbox
index.sqlite3

存档时,MBOxFilter根据每个电子邮件的重要头值形成索引项,并将其保存在索引数据库index.sqlite3中。索引避免了第二次添加存档的电子邮件。但是索引数据可以由sqlite 3查询。MBOxFilter还可以通过删除和导出附件来分解邮箱,如下例所示:

$ mboxiflter --export --reduce peter@home.org
$ ls
mxsdiykg.01.holiday.jpg
mxsdiykg.02.report.pdf

使用python类可以完成更复杂的任务。在下面的示例中,mboxfilter将所有从peter发送到rosie的电子邮件都转换为greps,不管使用哪个头字段(to、cc或bcc)来定义rosie为接收者。参数caching=true导致第6行的mboxilter将结果集存储在类成员传递的邮件中,而不是将其写入stdout。

#!/usr/bin/env python
from mboxfilter import Filter
import sys
passed = []
for header in ["To", "Cc", "Bcc"]:
  f = Filter(caching=True, filters=[("From", sys.argv[0]), (header, sys.argv[1])])
  f.filter(sys.argv[2])
  passed = passed + f.passed_mails
res = Filter(selectors=[("Date", "%Y")])
res.filter(passed)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何将java ArrayList对象转换为实际值   web服务如何在JAVA类uisng JAXBElement中解组SOAP UI值   包含无值参数的java HttpClient表单URL   运行简单Camel Restlet演示项目的java问题?   带有自定义图标的java简单SWT警报消息?   java Netbeans 6.8:LibImport可以工作,但编译时“包不存在”   java如何获得绘画完成的通知?   java Hazelcast客户端模式群集故障后如何恢复?   Neo4J中Shapefile的java批插入   为什么ThreadPoolExecutor在Eclipse和从命令行运行Java程序时表现不同?   java在Android中计算两个坐标之间的距离时得到了荒谬的值   java在CardLayout中显示卡本身的下一张卡