使用 Python 重新组装以“消息/部分”编码的电子邮件消息
Posted
技术标签:
【中文标题】使用 Python 重新组装以“消息/部分”编码的电子邮件消息【英文标题】:Re-assemble email messages encoded in 'message/partial' with Python 【发布时间】:2011-03-10 08:48:06 【问题描述】:有没有办法在 Python 中重新组装使用Content-Type: message/partial
编码的电子邮件消息(即RFC 1521 的“7.3.2. 消息/部分子类型”部分)?
特别是,给定一组emails,如何将它们合并回原来的?即
emails = [...] # a list of `email`.
reassembled_email = merge_emails(emails)
merge_emails
必须做什么?有任何 Python 项目这样做过吗?
可以期待这样的电子邮件:
来自:me@example.com 至:me2@example.com 日期:2010 年 6 月 30 日,星期三 14:19:45 -0400 MIME 版本:1.0 内容类型:消息/部分; id="TAN_U_R"; 数字=1; 总计=2 来自:me@example.com 主题: 至:me2@example.com 日期:2010 年 6 月 30 日,星期三 14:19:45 -0400 MIME 版本:1.0 内容类型:多部分/混合; 边界="DC_BOUND_PRE_" 这是 MIME 格式的多部分消息。 --DC_BOUND_PRE_ 内容类型:文本/纯文本;字符集=US-ASCII 内容传输编码:7bit 此电子邮件是从您的打印机发送的 一些随机文本。 --DC_BOUND_PRE_ 内容类型:应用程序/pdf;名称="abcdef.pdf" 内容传输编码:base64 内容处置:附件; 文件名="abcdef.pdf" JVBERi0xLjMKJZKgoooKNCAwIG9iago8PC9UeXBlL1hPYmplY3QKL1N1YnR5cGUvSW1hZ2UK ...这是我最初的想法:
from email import parser
def merge_emails(emails):
# we can presume emails are ordered correctly and all the parts accounted for
content = ''
for eml im emails:
content += emails.get_payload()
return parser.Parser().parsestr(content)
这行得通吗(就这么简单)?你怎么能重新组合这封电子邮件?
作为在 Python 中执行此操作的替代方法,是否有命令行 Unix/Mac OS X 程序可以执行此操作?
感谢您的阅读以及您可能提供的任何信息。
亲切的问候,
布赖恩
【问题讨论】:
【参考方案1】:以下对我有用:(Ubuntu Linux + Thunderbird)
将每条消息保存到一个文件夹(例如:part1.dat、part2.dat...partN.dat)- 顺序很重要 合并文件:cat part1.dat part2.dat partN.dat > mail.eml 用 Thunderbird 打开文件。 Thunderbird 可以理解 .eml 文件并将其作为电子邮件打开(完全组装)【讨论】:
谢谢贾加迪什。可以从命令行运行 Thunderbird 来达到预期的效果吗?【参考方案2】:虽然不是 Python 解决方案,但程序 uudeview 在重组 message/partial
电子邮件方面非常有帮助。
【讨论】:
以上是关于使用 Python 重新组装以“消息/部分”编码的电子邮件消息的主要内容,如果未能解决你的问题,请参考以下文章
如何从python中的字典输出中组装时间序列数据以进行监督分类