【问题标题】:Re-assemble email messages encoded in 'message/partial' with Python使用 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 程序可以执行此操作?

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

亲切的问候,

布赖恩

【问题讨论】:

    标签: python email mime rfc822


    【解决方案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 电子邮件方面非常有帮助。

    【讨论】:

      猜你喜欢
      • 2021-02-06
      • 2021-05-20
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 2016-07-09
      • 2019-02-28
      相关资源
      最近更新 更多