使用python邮箱读取mbox文件的邮件内容

时间:2014-10-25 22:19:58

标签: python email mbox

我正在尝试使用Python邮箱打印邮件内容(邮件正文)。

import mailbox

mbox = mailbox.mbox('Inbox')
i=1
for message in mbox:
    print i
    print "from   :",message['from']
    print "subject:",message['subject']
    print "message:",message['**messages**']
    print "**************************************" 
    i+=1

但我觉得消息['消息']不适合在此处打印邮件内容。我无法从documentation

中理解它

2 个答案:

答案 0 :(得分:15)

要获取邮件内容,您需要使用get_payload()mailbox.Messageemail.message.Message的子类。您还要检查is_multipart(),因为这会影响get_payload()的返回值。例如:

if message.is_multipart():
    content = ''.join(part.get_payload(decode=True) for part in message.get_payload())
else:
    content = message.get_payload(decode=True)

答案 1 :(得分:14)

def getbody(message): #getting plain text 'email body'
    body = None
    if message.is_multipart():
        for part in message.walk():
            if part.is_multipart():
                for subpart in part.walk():
                    if subpart.get_content_type() == 'text/plain':
                        body = subpart.get_payload(decode=True)
            elif part.get_content_type() == 'text/plain':
                body = part.get_payload(decode=True)
    elif message.get_content_type() == 'text/plain':
        body = message.get_payload(decode=True)
    return body

如果正文是纯文本,则此函数可以为您提供邮件正文。