Python gmail imap-如何读取邮件并将其打印为原始邮件头



我有一个脚本,可以从Gmail框中读取邮件,然后打印它。问题是它打印如下:

'MIME版本:1.0\r\n日期:2019年2月6日星期三15:22:04+0200\r\n消息ID:CAES-+zqJ-zFh40JBvB3bbkX-Md0dFQ-dc1ECQMynj-yp8C5eg@mail.gmail.com>\\r\n主题:test\r\n发件人:Ops\r\n收件人:test\\r\n内容类型:多部分/可选;boundary="000000000000 a56dd00581399c31"\r\n\r\n--000000000000 a56Dd005813992c31\r\n内容类型:text/plain;charset="UTF-8"\r\n\r\ngogle.com\r\n\r\n56.36.36.36\r\n\r\n000000000000 a56dd00581399c31\r\n内容类型:text/html;charset="UTF-8"\r\n\r\ngogle.com

56.36.36\r\n\r\n-000000000a56dd00581399c31-'

我正在尝试将邮件打印为原始邮件头:

MIME版本:1.0

日期:2019年2月6日星期三15:17:44+0200

消息ID:

主题:测试

发件人:测试

收件人:测试

内容类型:多部分/备选;boundary="00000000000020527b0581398">

--000000000000 20527b0581398

内容类型:text/plain;charset="UTF-8">

156.36.32.32

test.com

--000000000000 20527b0581398

内容类型:text/html;charset="UTF-8">

156.36.32.32

test.com--000000000000 20527b0581398——

脚本:

import imaplib
import pprint
imap_host = 'imap.gmail.com'
imap_user = 'user@gmail.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, 'ALL')
for num in data[0].split():
tmp, data = imap.fetch(num, '(RFC822)')
pprint.pprint(data[0][1])
imap.store(num, '+FLAGS', '\Deleted')
break

您可以很容易地看到,pprint表示有rn来表示物理回车+换行。为了将其拆分为一系列行,

message = data[0][1].split('rn')

为了正确地处理生成的MIME消息,您可能需要将其解析为email.message并从中获取。

但是,如果你不喜欢pprint的功能,立即解决的办法是不要使用它。

您可以使用email.message来更好地表示电子邮件(包括邮件头)

最新更新