过滤和排序来自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)