4

有没有办法在 Python 中重新组合编码的电子邮件消息Content-Type: message/partial(即RFC 1521的“7.3.2. The Message/Partial subtype”部分)?

特别是,给定一组电子邮件,如何将它们合并回原始邮件?IE

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<0.0000749046c4>";
 数字=1;
 总计=2

来自:me@example.com
主题:
至:me2@example.com
日期:2010 年 6 月 30 日,星期三 14:19:45 -0400
MIME 版本:1.0
内容类型:多部分/混合;
 边界="DC_BOUND_PRE_<1277921980.0000744>"

这是 MIME 格式的多部分消息。
--DC_BOUND_PRE_<1277921980.0000c4>
内容类型:文本/纯文本;字符集=US-ASCII
内容传输编码:7bit

此电子邮件是从您的打印机发送的

一些随机文本。

--DC_BOUND_PRE_<1277921980.0000744>
内容类型:应用程序/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 程序可以执行此操作?

感谢您阅读以及您可能提供的任何信息。

亲切的问候,

布赖恩

4

2 回答 2

3

以下对我有用:(Ubuntu Linux + Thunderbird)

  • 将每条消息保存到一个文件夹(例如:part1.dat、part2.dat...partN.dat) - 顺序很重要
  • 合并文件:cat part1.dat part2.dat partN.dat > mail.eml
  • 使用 Thunderbird 打开文件。Thunderbird 可以理解 .eml 文件并将其作为电子邮件打开(完全组装)
于 2015-04-22T15:06:49.663 回答
2

虽然不是 Python 解决方案,但程序uudeviewmessage/partial在重组电子邮件方面非常有帮助。

于 2010-07-10T01:40:50.170 回答