从电子邮件imap python打印正文
我试图打印来自特定发件人的所有电子邮件的电子邮件正文,当我运行代码I时,输出此从电子邮件imap python打印正文,python,python-3.x,email,imap,Python,Python 3.x,Email,Imap,我试图打印来自特定发件人的所有电子邮件的电子邮件正文,当我运行代码I时,输出此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(
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()
尝试
导入电子邮件
模块,然后使用msg=email.message\u from_字节(数据[0][1])
而不是pprint.pprint(数据[0][1])
创建邮件对象
数据[0][1]
我认为是整个电子邮件,而不仅仅是正文
之后,您可以循环浏览消息的各个部分,并找到其中的text/plain
部分。那就是你的身体。你可以这样做:
for part in msg.walk():
if part.get_content_type() == 'text/plain':
print(part.get_payload())
break
它不工作,输出显示错误“初始值必须是str或None,而不是bytes”。@MIGUELGP您是对的,我相信正确的函数应该是
email.message\u from\u bytes(数据[0][1])
。不管怎么说,答案非常广泛,我相信你会在里面找到你问题的大部分答案。