【发布时间】:2019-12-18 17:33:36
【问题描述】:
据我了解,Python 3.6 标准库中的mbox 类会生成email.message.Message 类型的旧式消息对象。
在 3.4/3.6 中引入的新类 email.message.EmailMessage 可以更轻松地访问消息内容(通过 get_content() 和 get_body())。如何将我从 mbox 迭代器获得的 email.message.Message 对象转换为 email.message.EmailMessage 对象?
【问题讨论】:
-
我正要问同样的问题,但同时找到了解决方案。 :) 可以将旧式消息转换为字符串或字节,然后使用
email.parser模块再次解析它(策略必须设置为email.policy.default)。但更直接的方法是将工厂传递给mbox类。像这样:mailbox.mbox(path, factory=lambda f: email.message_from_binary_file(f, policy=email.policy.default)) -
@ManuelJacob 太酷了!确实使用工厂是最好的!完美运行。值得成为一个答案,我认为......
标签: python python-3.x email rfc822