过滤和分类来自 mbox 的邮件以进行归档和报告。
项目描述
mbox过滤器
mboxfilter是一个 Python 类,用于按标头字段过滤和排序邮箱(mbox 格式)。邮箱也可以通过删除和导出附件来分解。您可能会发现 mboxfilter 对于归档和报告很有用。mboxfilter 可以通过软件包附带的命令行工具(也称为 mboxfilter)调用。它充当类的包装器。在以下示例中,mboxfilter 对从 Peter 发送给 Frank 的所有电子邮件进行 greps:
$ mboxfilter --filter_from "peter@(?:work.com|home.org)" --filter_to "frank@" peter2012.mbox peter2013.mbox
所有过滤器都接受正则表达式。它们与相应标题字段的值相匹配。在上面的示例中,正则表达式 peter@(?:work.com|home.org) 与 From 和 frank@ 与存储在 mbox 文件 peter2012.mbox 和 peter2013.mobx 中的每封电子邮件的 To 进行匹配。如果每个正则表达式都匹配,则将一封电子邮件添加到结果集中。结果集将默认打印到 STDOUT。此外,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 将每个结果集写入自己的文件。一封电子邮件可能是多个结果集的成员。在上面的示例中,一封写给 Frank 和 Rosie 的电子邮件出现在:rosie @ home 。组织. 2012 年。mbox和弗兰克@home 。 _ 组织. 2012 年。箱。排序操作拒绝选项,日期排序除外。它需要一个格式字符串。在以下示例中,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 类可以完成更复杂的任务。在以下示例中,无论使用哪个标头字段(To、Cc 或 Bcc)将 Rosie 定义为接收者,mboxfilter 都会对从 Peter 发送到 Rosie 的所有电子邮件进行 greps。参数caching=True 导致第6 行中的mboxilter 将结果集存储在类成员passed_mails 中,而不是将它们写入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)
班级
class mboxfilter.Filter(output ::= "./", archive ::= False, indexing ::= False, filters ::= [], selectors ::= [], caching ::= False, separator ::= ".", failures ::= None, export_payload ::= False, reduce_payload ::= False, payload_exportpath ::= ".", quiet ::= False)
Filter 类可用于实例化自己的过滤器。参数过滤器采用元组列表,例如:[(“From” , “ peter@home.org ” ), (“To” , “ rosie@home.org ” ) ] 。元组的第一项引用标题字段的名称。它的值与第二项中的正则表达式匹配。(比赛被保留,见下文)。如果每个过滤器都匹配,则将一封电子邮件添加到结果集中。
参数选择器也接受一个元组列表。元组的第一项注册了一个标题字段,用于对过滤后的结果集进行排序。元组的第二项被忽略,但标题字段 Date 除外。它需要一个格式字符串从标头字段的值中提取一个认可的日期字符串。选择器列表可能如下所示:[(“To”, None), (“Date”, “%Y”)]。mboxiflter 使用选择器为过滤结果集中的每封电子邮件创建一组关键部分。关键部分用于形成排序键。因此,关键部分由参数分隔符的值连接。标题字段 From、To、Cc 和 Bcc 可能会为单个电子邮件生成多个排序键,因为发送给多个接收者的电子邮件必须是每个接收者的结果集的成员。但是,如果标头字段充当过滤器和选择器,mboxfilter 只会为匹配的电子邮件地址形成结果集。例如,表达式 filters=[('To', ' rosie @ home .org')], selectors=[('To', None)] 只为 Rosie 生成结果集。
在没有任何选择器的情况下,mboxfilter 将结果集打印到 STDOUT。否则,排序键将用作文件名。参数 failures 将所有失败的电子邮件重定向到给定的路径。参数输出将所有文件重定向到给定目录。参数 indexing=True 导致 mboxfilter 形成一个 uniq 结果集。因此它创建了结果集数据库 index.sqlite3。参数 archive=True 是 indexing=True, selectors=[(“Date”, “%Y”)] 的简写。参数caching=True 将结果集重定向到类成员passed_mails、failed_mails 和resultset。排序键充当字典结果集的键。
参数 export_payload 将多部分电子邮件中的所有附件导出到文件。payload_exportpath 将附件重定向到给定目录。reduce_payload 从电子邮件中删除附件。多部分电子邮件中具有文件名属性的每条消息都被视为附件。设置 quiet=True 抑制错误消息的输出。
成员
filtered ::= 0
已处理的电子邮件数量。
passed ::= 0
已添加到任何结果集中的电子邮件数量。
failed ::= 0
失败的电子邮件数量。
passed_mails ::= []
结果集,如果设置了参数缓存。
failed_mails ::= []
失败列表,如果设置了参数缓存。
resultset ::= {}
结果集。排序键充当字典的键。
方法
filter_mbox(obj)
filter_mbox 处理 obj 引用的邮箱的每一封邮件。Obj 可以是mailbox.mbox 类的实例,也可以是引用mbox 格式邮箱的路径。
filter_mail(mail)
filter_mail 处理mailbox.mboxMessage 类的给定实例。
命令
mboxfilter [--help] [--version] [--quiet] [--dir path] [--failures path] [--unique] [--archive] [--filter_from regexp] [--filter_to regexp] [--filter_date regexp] [--filter header,regexp] [--sort_from] [--sort_to] [--sort_date format] [--sort header,regexp] [--reduce] [--export] [--exportpath path] mbox ...
项目详情
mboxfilter -0.1.6.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | ad9cd8cc4108008a51b34667fda01f78cd06d6ed65075ef3999cfe8fa1386b54 |
|
| MD5 | 7573b169a1194fa00e530c5f81d4fef7 |
|
| 布莱克2-256 | 8f12c4328c5036a0da6eed910be0a318f1d6195f4e62b973a5d0ffcf0b2a22fa |