我正在尝试使用python的email
- 模块解析一封电子邮件,其中Parser()
- 子模块提供了email.utils
。
但是,有些特殊字符我无法正确解析/转换。
这是我到目前为止的脚本:
import sys
import email
from email.parser import Parser
full_msg = Parser().parse(sys.stdin)
msg = full_msg # this ugly line is part of former debugging
sender = msg['from']
to = msg['to']
subject = msg['subject']
body = msg.get_payload()
date = msg['Date']
fname = '{}.txt'.format(date)
with open(fname, 'w') as f:
f.write('{:10}{}\n'.format('Von:', sender))
f.write('{:10}{}\n'.format('An:', to))
f.write('{:10}{}\n'.format('Betreff:', subject))
f.write('{}\n'.format(body))
由于我正在解析国际邮件和德国邮件,我必须处理所谓的“上变换”(ä
,ü
,ö
)以及其他一些字符,例如{ {1}}和省略号(ß
)。
所以例如像
这样的身体...
得到
Würde Dürfte Könnte
和
的主题W=C3=BCrde D=C3=BCrfte K=C3=B6nnte=
变为
Das dürfte jetzt klappen
有没有办法处理那些编码/解码问题?我错过了什么?
更新1:
系统的语言版本。编码设置为=?utf-8?Q?Das_d=C3=BCrfte_jetzt_klappen?=
。我通过重新配置可用的区域设置将其更改为en_US.UTF-8
。但是,这根本没有改变输出。 de_DE.UTF-8
给出:
locale
更新2:
我发现这种类型的字符串格式称为Quoted-printable。有一个名为quopri的Python模块来处理这种格式,但我无法获得令人满意的结果。但是,我使用MailParser切换到JavaScript,它就像一个魅力。