Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从电子邮件imap python打印正文_Python_Python 3.x_Email_Imap - Fatal编程技术网

从电子邮件imap python打印正文

从电子邮件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(

我试图打印来自特定发件人的所有电子邮件的电子邮件正文,当我运行代码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(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])
。不管怎么说,答案非常广泛,我相信你会在里面找到你问题的大部分答案。