我知道这个问题已经被问了几千次了,但我快要紧张了,所以我忍不住寻求帮助。
我有一封带有法国口音的电子邮件。这句话是:
"席琳:柏林安妮特: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)