【问题标题】:read body of email using imapclient in python在 python 中使用 imapclient 读取电子邮件正文
【发布时间】:2014-07-27 08:44:01
【问题描述】:

我正在尝试查看电子邮件的实际正文。到目前为止,我可以查看主题或任何其他标题,但我无法找到一种仅阅读正文而无需额外内容的方法。

from imapclient import IMAPClient
import email

host = 'imap.gmail.com'
user = 'myEmailAddress'
password = 'myPassword'
ssl = True

server = IMAPClient(host, use_uid=True, ssl=ssl)
server.login(user, password)

inboxInfo = server.select_folder('INBOX')
messages = server.search(['NOT DELETED'])
response = server.fetch(messages, ['RFC822', 'BODY[TEXT]'])

for msgid, data in response.iteritems():
        parsedEmail = email.message_from_string(data['RFC822'])
        body = email.message_from_string(data['BODY[TEXT]'])
        parsedBody = parsedEmail.get_payload(0)
        print parsedBody

server.logout()

然后返回:

>From nobody Fri Jun  6 01:29:34 2014
>Content-Type: text/plain; charset=UTF-8
>
>Email body

我只想返回:

>Email body

【问题讨论】:

    标签: python email imapclient


    【解决方案1】:

    get_payload(i) 返回一个Message 对象。

    您可以使用Message.walk() 方法并测试text/plain

    例如

    for part in message.walk():
       if part.get_content_type() == "text/plain":
          do_stuff_with_text_parts(part)
    

    【讨论】:

    • 是的,这是错误的。get_payload 返回 str 对象。 message_from_string 函数返回消息对象。
    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 2020-06-30
    • 2018-02-23
    • 2015-10-23
    • 2020-07-24
    • 1970-01-01
    • 2017-05-13
    • 2017-04-15
    相关资源
    最近更新 更多