消息实例没有属性 'is_multipart'

Message instance has no attribute 'is_multipart'

我正在尝试编写一个脚本来获取 ~/Maildir 中所有邮件的内容。所以我基本上是从 this question 复制粘贴代码。以下是mailbox.py的全部内容:

import mailbox
maildir = mailbox.Maildir("~/Maildir");
for message in maildir:
    print message["subject"]
    if message.is_multipart():
        print "ok"

它确实打印了第一条消息的主题,但没有打印 "ok" 然后,它死于声明

AttributeError: Message instance has no attribute 'is_multipart'

我做错了什么?

您忘记为您的 Python 版本命名,让我猜猜它是 Python 2.7,对吧?在 Python 2.7 mailbox.Maildir 默认情况下 returns instances of rfc822.Messages, not email.Messages; rfc822.Message has a completely different API.

如果您想要 mailbox.Maildir 到 return email.Message 删除默认值 factory:

maildir = mailbox.Maildir("~/Maildir", factory=None)

在 Python 3 中删除了 rfc822.Message,因此默认 mailbox.Maildir returns email.Messages。