我正在尝试解码我在 IMAP 服务器上接收的电子邮件的 html 附件文件。如果 html 文件包含正常字符,它可以正常工作,但是当你有一些法语é
字符时,我有这个:"vous a \xc3\xa9t\xc3\xa9 envoy\xc3\xa9e par"
我也有所有\n
\r
这些。
我使用beautifulsoup 对html 代码进行一些搜索。我还使用循环来检查所有邮件(此代码中不存在)
imap_server = imaplib.IMAP4_SSL("server",993)
imap_server.login(username, password)
imap_server.select("test")
result, data = imap_server.uid('search', None, "UnSeen")
latest_email_uid = data[0].split()[-1]
result, data = imap_server.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = data[0][1]
raw_email=str(raw_email, 'UTF8')
msg = email.message_from_string(raw_email)
我走进邮件,如果我找到一些 html,我会从 base64 解码它并发送到 beautifulsoup。之后我用 utf-8 转换打印它。如果我用 latin-1 替换 encode.('utf-8') 我还有特殊的字符。
if msg.is_multipart():
for part in msg.walk():
if part.get_content_type() == 'text/html':
attachment= (part.get_payload(decode=1))
soup=BeautifulSoup(attachment)
print (soup.prettify().encode('utf-8'))
else:
print ("No HTML")
我试图在没有很好的东西的情况下对很多字符集进行编码和解码。我也试过了,base64.b64decode(text).decode('utf-16')
但还是一样\xc3\xa9