使用IMAPClient在Python中读取邮件正文

3 投票
1 回答
8014 浏览
提问于 2025-04-18 08:50

我想查看一封邮件的具体内容。到目前为止,我可以看到邮件的主题或者其他一些信息,但我找不到只读取邮件正文的方法,而不带其他多余的内容。

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

1 个回答

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

撰写回答