【发布时间】:2021-08-13 05:11:20
【问题描述】:
您好,目前我正在使用 Python 的 IMAPLIB 和 EMAIL 库来阅读并获取不同电子邮件的内容发送,但是当我收到来自 Outlook 的电子邮件回复时,我无法从电子邮件中获取内容,我会收到这样的字符串:
'PGh0bWw + DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i \ r \ ndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgc3R5bGU9 \ r \ nImRpc3BsYXk6bm9uZTsiPiBQIHttYXJnaW4tdG .......'强>
这是获取电子邮件的代码,我用于验证 IMAPLIB,电子邮件服务器是使用此 repo 构建的:https://github.com/modoboa/modoboa
mail.select("inbox")
result, data = mail.uid('search', None, 'UNSEEN')
inbox_item_list = data[0].split()
list_emails = []
root_dict = {}
campaigns = []
for item in inbox_item_list:
result2, email_data = mail.uid('fetch', item, '(RFC2045)')
raw_email = email_data[0][1].decode('utf-8')
email_message = email.message_from_string(raw_email)
to_= email_message["Delivered-To"]
from_= email_message['From']
subject_= email_message['Subject']
counter = 1
for part in email_message.walk():
if part.get_content_maintype() == "multipart":
continue
filename = part.get_filename()
if not filename:
ext = 'html'
filename = 'msg-part-%08d%s' %(counter, ext)
counter += 1
content_type = part.get_content_type()
if "plain" in content_type:
pass
elif "html" in content_type:
emails = {}
html_ = part.get_payload()
soup_ = BeautifulSoup(html_, "html.parser")
text = soup_.get_text()
text 是保存电子邮件内容的变量,适用于 Gmail,但目前不适用于 Outlook 的电子邮件回复。
【问题讨论】:
-
我不确定,但粗体文本看起来像是加密的,或者至少只是 base64 编码的。可能是后者。
-
目前,我探测 base64 但不起作用,这是一个哈希完成。 pastebin.com/NzHCwJ5f
标签: python email outlook imap imaplib