Python poplib:检索电子邮件结果的正文为NONE

时间:2017-07-12 15:41:47

标签: python python-3.x poplib

我可以收到电子邮件的主题,但是正文总是无效。尝试遵循此link但所有建议最终都是相同的。身体仍然打印为无。

import poplib
from email import parser
pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('my_email.com')
pop_conn.pass_('my_password')
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
messages = ['\n'.join(map(bytes.decode, mssg[1])) for mssg in messages]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]

for message in messages:
    print (message['subject'])
    print (message['body'])
    print (message.get_payload())
pop_conn.quit()

1 个答案:

答案 0 :(得分:0)

import poplib
from email import parser
pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('my_email.com')
pop_conn.pass_('my_password')
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
messages = ['\n'.join(map(bytes.decode, mssg[1])) for mssg in messages]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]

for message in messages:
    print (message['subject'])
    print (message['from'])
    for part in message.walk():
        if part.get_content_type():
            body = part.get_payload(decode=True)
            print(body)
pop_conn.quit()

这就是诀窍。但是它打印出一条直线。如果消息正文很长,任何人都知道如何打印每行?