从电子邮件 imap python 打印正文



我正在尝试打印来自特定发件人的所有电子邮件的电子邮件正文,当我运行代码时,当输出此行5H6ONzrsveoHzDAKli/和更多随机字母和符号时。这是整个代码。谢谢

import imaplib
import pprint
imap_host = 'imap.gmail.com'
imap_user = 'user@googlemail.com'
imap_pass = 'password'
# connect to host using SSL
imap = imaplib.IMAP4_SSL(imap_host)
## login to server
imap.login(imap_user, imap_pass)
imap.select('Inbox')
tmp, data = imap.search(None, '(FROM "specific@gmail.com")')
for num in data[0].split():
tmp, data = imap.fetch(num, '(RFC822)')
#print('Message: {0}n'.format(num))
pprint.pprint(data[0][1])
break
imap.close()

尝试import email模块,然后使用msg = email.message_from_bytes(data[0][1])而不是pprint.pprint(data[0][1])创建消息对象。

data[0][1]我认为是整个电子邮件,而不仅仅是正文。

之后,您可以遍历消息的各个部分,并找到其中text/plain部分。那将是你的身体。您可以像这样操作:

for part in msg.walk():
if part.get_content_type() == 'text/plain':
print(part.get_payload())
break