【问题标题】:Python poplib: retrieving body of the email result to NONEPython poplib:将电子邮件结果的正文检索为 NONE
【发布时间】:2017-07-13 00:57:21
【问题描述】:

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

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()

【问题讨论】:

    标签: python python-3.x poplib


    【解决方案1】:
    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()
    

    这成功了。但是它打印一条直线。如果邮件正文很长,有人知道如何按行打印吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 2018-05-22
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多