在Python中,如何将`email.message.Message`对象转换为`email.message.EmailMessage`对象 [英] In Python how to convert an `email.message.Message` object into an `email.message.EmailMessage` object
问题描述
据我了解,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屋!