существует ли какой-либо модуль Python, который помогает декодировать различные формы закодированных заголовков почты, в основном Subject, простым словам - строки 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?=
текст - закодированное sting - текст
текстовая строка
текст - закодированная строка - закодированная строка
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 is [('[201101251025] ELStAM;? = UTF-8 В IFZlcmbDvGd1bmcgdm9tIDIx =??. Januar 2011 ', None)]
что действительно не помогает.
Обновление 2: Спасибо Ingmar Hupp в комментариях.
первый пример декодирует список из двух тэгелей:
print decode_header ( "" [201105161048] GewSt:?? = UTF-8 В IFdlZ2ZhbGwgZGVyIFZvcmzDpHVmaWdrZWl0 = "" )
[('[201105161048] GewSt:', None), ('Wegfall der Vorl\xc3\xa4ufigkeit', 'UTF-8')]
это всегда [(string, encoding), (string, encoding),...], поэтому мне нужен цикл для конкатюции всех элементов [0] в одну строку или как получить все это в одной строке?
Тема: [201101251025] ELStAM; =? UTF-8? B? IFZlcmbDvGd1bmcgdm9tIDIx? =. Januar 2011
не хорошо декодируется:
print decode_header ( "" [201101251025] ELStAM; =? UTF-8? B? IFZlcmbDvGd1bmcgdm9tIDIx? =. Januar 2011 "" ")
[('[201101251025] ELStAM; =? UTF-8? B? IFZlcmbDvGd1bmcgdm9tIDIx? =. Januar 2011', None)]