gpt4 book ai didi

python邮件编码解码问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:52:08 24 4
gpt4 key购买 nike

基本上我想从收件箱中读取所有新电子邮件并将它们放入数据库中。我用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),但这给了我字节数组。如果我附加另一个 decode('utf-8'),它有时会崩溃并出现类似

的错误

'codec error can't decode to ...'.

我不知道编码是如何工作的,我只想要一个带有我电子邮件正文的 unicode 字符串。

为什么没有简单的convert(charset from, charset to)?我如何获得可读的电子邮件正文(和地址?)。我发现了 IMAP Fetch Encoding并使用 decode_header 我没有进一步。

--

我假设编码是字节表示字符的方式,所以考虑到这一点,不应该解码一个字节数组并吐出一个字符串吗?在堆栈溢出时,我遇到有人声称它与使用 utf-8utf-7 编码的蜜蜂有关。这到底是什么意思?

我用谷歌搜索了一下,似乎有很多重复的内容,但他们得到的答案并没有真正帮助我(我已经尝试了其中的大部分)

最佳答案

事实证明这很容易。尽管所有文档都指出了 unicode 函数仍然存在的辉煌过去,但“str”仍然如此。

总而言之,您必须将“decode=True”与“getPayload”一起传递,并将其包裹在一个 str(...,'utf-8') 中。

关于python邮件编码解码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23887784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com