消息实例没有属性'is_multipart'

时间:2017-08-21 19:50:50

标签: python email attributeerror

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

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

它确实打印了第一条消息的主题,但是不是打印“确定”然后就死了,

AttributeError: Message instance has no attribute 'is_multipart'

我做错了什么?

1 个答案:

答案 0 :(得分:1)

你忘了给你的Python版本命名所以我猜 - 它是Python 2.7,对吧?在Python 2.7 mailbox.Maildir默认returns rfc822.Messages个实例,而不是email.Message s; rfc822.Message有完全不同的API

如果您希望mailbox.Maildir返回email.Message,请删除默认factory

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

在Python 3中删除了rfc822.Message,因此mailbox.Maildir默认返回email.Message