gpt4 book ai didi

python - 电子邮件主题中的编码如何工作? ( Django / python )

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

我正在向 Gmail 邮箱发送带有 EmailMessage 对象的电子邮件。
电子邮件的主题如下所示:u"你收到了一封来自 Daėrius ęėįęėįəįėęįę 的信---reply3_433441"

当我收到一封电子邮件时,查看消息信息我可以看到主题行如下所示:

主题:=?utf-8?b?WW91IGdvdCBhIGxldHRlciBmcm9tIERhxJdyaXVzIMSZxJfEr8SZxJfEr8SZ?= =?utf-8?b?xK/El8SZxK/EmS0tLXJlcGx5M180MzM0NDE=?=

如何解码这个主题行?

我已经成功解码了电子邮件正文(tex/plain):

for part in msg.walk():
if part.get_content_type() == 'text/plain':
msg_encoding = part.get_content_charset()
msg_text = part.get_payload().decode('quoted-printable')
msg_text = smart_unicode(msg_text, encoding=msg_encoding, strings_only=False, errors='strict')

最佳答案

参见 RFC 2047有关国际化电子邮件 header 格式的完整描述。基本格式是 "=?"字符集“?”编码“?”编码文本“?=”。因此,在您的情况下,您有一个 base-64 编码的 UTF-8 字符串。

您可以使用 email.header.decode_headerstr.decode函数对其进行解码并获得正确的 Unicode 字符串:

>>> import email.header
>>> x = email.header.decode_header('=?utf-8?b?WW91IGdvdCBhIGxldHRlciBmcm9tIERhxJdyaXVzIMSZxJfEr8SZxJfEr8SZ?=')
>>> x
[('You got a letter from Da\xc4\x97rius \xc4\x99\xc4\x97\xc4\xaf\xc4\x99\xc4\x97\xc4\xaf\xc4\x99', 'utf-8')]
>>> x[0][0].decode(x[0][1])
u'You got a letter from Da\u0117rius \u0119\u0117\u012f\u0119\u0117\u012f\u0119'

关于python - 电子邮件主题中的编码如何工作? ( Django / python ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343191/

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