在Python中,如何将`email.message.Message`对象转换为`email.message.EmailMessage`对象 [英] In Python how to convert an `email.message.Message` object into an `email.message.EmailMessage` object

查看:71
本文介绍了在Python中,如何将`email.message.Message`对象转换为`email.message.EmailMessage`对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

据我了解,Python 3.6标准库中的 mbox 类生成类型为 email.message.Message 的旧式消息对象.

From my understanding the mbox class in Python 3.6's standard library generates old-style message objects of the type email.message.Message.

3.4/3.6中引入的新类 email.message.EmailMessage 使通过 get_content() get_body()).如何将从 mbox 迭代器获得的 email.message.Message 对象转换为 email.message.EmailMessage 对象?

The newer class email.message.EmailMessage introduced in 3.4/3.6 offers easier access to the content of the message (via get_content() and get_body()). How can I convert the email.message.Message objects I get from the mbox iterator into email.message.EmailMessage objects?

推荐答案

使用

Taking @ManuelJaco's comment I was able to create an mbox instance which contains automatically message objects of the type email.message.EmailMessage:

def make_EmailMessage(f):
    """Factory to create EmailMessage objects instead of Message objects"""
    return email.message_from_binary_file(f, policy=epolicy.default)

mbox = mailbox.mbox(mboxfile, factory=make_EmailMessage)

mbox 上进行迭代时,所有消息(甚至消息中包含的消息!)都属于 email.message.EmailMessage 类型.

When iterating over mbox all messages (even messages contained in a message!) are of the email.message.EmailMessage type.

这篇关于在Python中,如何将`email.message.Message`对象转换为`email.message.EmailMessage`对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆