Python 一封电子邮件可以包含多少文本/纯文本和文本/html部分?

Python 一封电子邮件可以包含多少文本/纯文本和文本/html部分?,python,email,Python,Email,我正在尝试用python编写电子邮件的通用解析器函数。我希望这个函数能够获取任何电子邮件的所有纯文本和所有html def parse(msg): """function accepts an email.message_from_bytes object.""" text = None html = None for p in msg.walk(): if p.get_con

我正在尝试用python编写电子邮件的通用解析器函数。我希望这个函数能够获取任何电子邮件的所有纯文本和所有html

def parse(msg):
    """function accepts an email.message_from_bytes object."""
    
    text = None
    html = None

    for p in msg.walk():
        if p.get_content_type() == 'text/plain':
            text = p.get_payload()

        elif p.get_content_type() == 'text/html':
            html = p.get_payload()

    return text, html

我的问题是:一封电子邮件可以有多个文本/纯文本或部分或文本/html部分吗?在上面的函数中,我只解析每个函数的一个实例。我是否需要为有多个文本/普通部分或html部分的实例做好准备?

您可以将
text
html
定义为
list
并将每个部分附加到列表中。例如,
text\u parts=[]
text\u parts.append(p.get\u payload())
。但我想知道是否需要。阅读RFC 2822文档并不容易。我不是专业人士,但据我记忆所及,我收到过几封邮件,但我不确定是
html
还是
multipart
。我认为没有任何限制。但是如果它是多部分/可选的,那么具有相同MIME类型的多个部分是不常见的——这种类型的通常原因是选择不同的格式。参见第7.2.3节,这并不复杂。