我有一个脚本,可以从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.32test.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
来更好地表示电子邮件(包括邮件头)