Python 电子邮件有效负载解码



我知道这个问题已经被问了几千次了,但我快要紧张了,所以我忍不住寻求帮助。

我有一封带有法国口音的电子邮件。这句话是:

"席琳:柏林安妮特:0633'。

python 更改的电子邮件包

":" 在 "=3A" 上

"é"在"=E9"上。

如何回到口音?? 和"="符号?

我在网上尝试了几件事:

获取有效负载:

>>> z = msg.get_payload()
>>> z
'C=E9line =3A Berlin Annette =3A 0633'
>>> infos(z)
(<type 'str'>, '  'C=E9line =3A Berlin Annette =3A 0633')

通过其字符集对其进行解码:

>>> z = msg.get_payload().decode(msg.get_content_charset())
>>> z
u'  C=E9line =3A Berlin Annette =3A 0633'
>>> infos(z)
(<type 'unicode'>, u'  'C=E9line =3A Berlin Annette =3A 0633')

或解码后用utf_8编码:

>>> z = msg.get_payload().decode(msg.get_content_charset()).encode('utf-8')
>>> z
  'C=E9line =3A Berlin Annette =3A 0633'
>>> infos(z)
(<type 'str'>,   'C=E9line =3A Berlin Annette =3A 0633')

我也尝试了网址:

urllib.unquote(z)
'C=E9line =3A 00493039746784 Berlin Annette =3A 0633'

似乎什么都行不通:(

您可以使用quopri.decodestring来解码字符串。

>>> quopri.decodestring('C=E9line =3A 00493039746784 Berlin Annette =3A 0633')
'Cxe9line : 00493039746784 Berlin Annette : 0633'

如果您将decode=True传递给Message.get_payload,它将为您执行上述操作:

msg.get_payload(decode=True)

最新更新