【发布时间】:2019-05-21 03:58:08
【问题描述】:
我正在使用 Python 3.5 和 imaplib 从 GMail 获取电子邮件并打印其正文。正文包含非 ASCII 字符。
这些是以一种奇怪的方式“编码”的,我不知道如何解决这个问题。
import email
import imaplib
c = imaplib.IMAP4_SSL('imap.gmail.com')
c.login('example@gmail.com', 'password')
c.select('Inbox')
_, data = c.fetch(b'12345', '(RFC822)')
mail = data[0][1]
message = email.message_from_bytes(mail)
payload = message.get_payload()
body = mail[0].as_string()
print(body)
给予
>> ... Mit freundlichen Gr=C3=BC=C3=9Fen ...
而不是想要的
>> ... Mit freundlichen Grüßen ...
在我看来,这不是编码问题,而是转换问题。但是我如何告诉 Python 正确地转换字符呢?有没有更方便的图书馆?
【问题讨论】:
-
如果您使用的是 python3.6 或更高版本,您可以使用
EmailMessage.get_content()自动解码带引号的可打印文本。有关重复的目标问题,请参阅 my answer。
标签: python python-3.x character-encoding email non-ascii-characters