是否有任何 Python 模块可以帮助将各种形式的编码邮件标头(主要是主题)解码为简单的 - 比如说 - UTF-8 字符串?
以下是我拥有的邮件文件中的示例主题标头:
Subject: [ 201105311136 ]=?UTF-8?B?IMKnIDE2NSBBYnM=?=. 1 AO;
Subject: [ 201105161048 ] GewSt:=?UTF-8?B?IFdlZ2ZhbGwgZGVyIFZvcmzDpHVmaWdrZWl0?=
Subject: [ 201105191633 ]
=?UTF-8?B?IERyZWltb25hdHNmcmlzdCBmw7xyIFZlcnBmbGVndW5nc21laHJhdWZ3ZW5kdW4=?=
=?UTF-8?B?Z2VuIGVpbmVzIFNlZW1hbm5z?=
文本 - 编码的字符串 - 文本
文本 - 编码字符串
文本 - 编码字符串 - 编码字符串
Encodig 也可以是 ISO 8859-15 之类的其他标准。
更新 1:我忘了提,我试过 email.header.decode_header
for item in message.items():
if item[0] == 'Subject':
sub = email.header.decode_header(item[1])
logging.debug( 'Subject is %s' % sub )
这输出
DEBUG:root:Subject 是 [('[ 201101251025 ] ELStAM;=?UTF-8?B?IFZlcmbDvGd1bmcgdm9tIDIx?=.Januar 2011', None)]
这并没有真正的帮助。
更新 2:感谢评论中的 Ingmar Hupp。
第一个示例解码为两个元组的列表:
print decode_header("""[ 201105161048 ] GewSt:=?UTF-8?B?IFdlZ2ZhbGwgZGVyIFZvcmzDpHVmaWdrZWl0?=""")
[('[ 201105161048 ] GewSt:', None), (' Wegfall der Vorl\xc3\xa4ufigkeit', 'utf-8')]
这总是 [(string, encoding),(string, encoding), ...] 所以我需要一个循环将所有 [0] 项连接到一个字符串或如何将它们全部放在一个字符串中?
主题:[201101251025] ELStAM;=?UTF-8?B?IFZlcmbDvGd1bmcgdm9tIDIx?=。2011 年 1 月
解码不好:
打印 decode_header("""[ 201101251025 ] ELStAM;=?UTF-8?B?IFZlcmbDvGd1bmcgdm9tIDIx?=.Januar 2011""")
[('[ 201101251025 ] ELStAM;=?UTF-8?B?IFZlcmbDvGd1bmcgdm9tIDIx?=.Januar 2011', None)]