python电子邮件编码和解码问题
基本上我想从收件箱中读取所有新电子邮件并将它们放在数据库中.我使用
python的原因是因为它有imaplib,但我对它一无所知.
目前,我有这样的事情: def primitive_get_text_blocks(email_message_instance): maintype = email_message_instance.get_content_maintype() if maintype == 'multipart': return_parts = "" for part in email_message_instance.get_payload(): if part.get_content_maintype() == 'text': return_parts+= " "+ part.get_payload() return return_parts elif maintype == 'text': return email_message_instance.get_payload() return "" fromField=con.escape(email_message["From"]) contentField=con.escape(primitive_get_text_blocks(email_message)) 原始的get_text_blocks是从某个地方复制粘贴的. <META http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8"> 据我所知,这与在utf-7中编码有关.所以我改为get_payload(decode = True),但这给了我字节数组.如果我附加另一个解码(‘utf-8’),它有时会因为错误而崩溃
我不知道编码是如何工作的,我只想要一个带有我的电子邮件正文的unicode字符串. 为什么没有简单的转换(字符集来自charset)?如何获得可读的电子邮件正文(和地址?).我发现IMAP Fetch Encoding并使用decode_header我没有进一步. – 我假设编码是字节表示字符的方式,所以考虑到这一点,不应该解码一个字节数组并吐出一个字符串?在堆栈溢出时,我遇到了一些人,因为它与使用utf-8和utf-7编码的beeing有关.那有什么意思? 我做谷歌,似乎有很多重复,但他们得到的答案并没有真正帮助我(我已经尝试了大部分) 解决方法
事实证明这很容易.即使所有文档都指向了unicode函数仍然是真实的辉煌过去,’str’也是如此.
所以回顾一下,你必须通过’getPayload’传递’decode = True’并将其包裹在str(…,’utf-8′)周围. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |