尝试使用 Python 加载一些电子邮件时,我收到了奇怪的消息正文。
我的代码:
session = imaplib.IMAP4_SSL(host_in, port_in)
session.login(login, password)
session.select('Inbox')
_response_status, response_body = session.search(None, '(UNSEEN)')
msg_id_list = response_body[0].split()
result = []
for msg_id in msg_id_list:
_response_status, response_body = session.fetch(msg_id,
'(RFC822)')
print(response_body[0][1].decode('utf-8'))
对于短信来说一切正常。但对于某些消息,我得到正确的标题,但正文看起来像:
PGRpdj48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO2NvbG9yOiMwMDAwMDA7
... 20 lines of some chars ...
Pg0KPC9ibG9ja3F1b3RlPg0KPC9ibG9ja3F1b3RlPg0KPC9ibG9ja3F1b3RlPg0KPC9ibG9ja3F1
b3RlPg==
(我将 20 行字符替换为“... 20 行一些字符...”) 不同的长消息的正文看起来是相同的,知道为什么会发生这种情况吗?
最佳答案
我明白了这一点。由于某种原因,电子邮件服务器仅对正文进行 base64 编码,我还不知道为什么。但我可以像这样解码消息:
import base64
base64.b64decode(my_wierd_msg_body_goes_here)
关于Python 获取电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511787/