Latest posts on Декодирование многострочного заголовка письма. Python 2.7 topichttp://python.su/forum/topic/31691/2016-12-27T08:46:23+02:00Общий :: Python для экспертов :: Декодирование многострочного заголовка письма. Python 2.7
2016-12-27T08:46:23+02:00ZerG172550посмотрите исходники либы <br/><a href="https://github.com/martinrusev/imbox">https://github.com/martinrusev/imbox</a><br/>
Общий :: Python для экспертов :: Декодирование многострочного заголовка письма. Python 2.7
2016-12-23T07:31:22+02:00py.user.next172340Чистый email.header.decode_header() без каких-то действий неприменим. В диком мире заголовки бывают неправильно закодированы, бывают оборванными на середине. В любом случае нужна своя функция, которая раскодирует заголовок, в том числе и с помощью email.header.decode_header(). А вот эти MIME-части хорошо можно отличить от остального содержимого с помощью регулярок и просто их отдельно раскодировать и вставить результат обратно, будто их и не было изначально. Но даже в этом случае там не так всё просто, потому что бывают левые кодировки, а бывает, что и кодировка не определяется. Я писал функцию в своей проге. Пока тестами не обложил её вдоль и поперёк, всё время где-то вылазила ошибка при раскодировании (приходило какое-нибудь новое письмо - и до свидания, программа выпадала). Запутанная функция получилась.<br/><br/><div class="code"><pre> def _decode_header(self, header):<br/> # дано : заголовок и кодировка сообщения<br/> # получить: ответ = раскодированный заголовок<br/> # (если раскодирование невозможно,<br/> # ответ = первоначальный заголовок)<br/> res = ''<br/> defenc = 'latin1'<br/> for i in email.header.decode_header(header):<br/> t, e = i<br/> if e:<br/> if e != 'unknown-8bit':<br/> s = t.decode(e)<br/> else:<br/> s = t.decode(self._charset or defenc)<br/> else:<br/> if isinstance(t, str):<br/> s = t<br/> elif re.search(br'\\u[\da-f]{4}', t):<br/> s = t.decode('unicode_escape')<br/> else:<br/> s = t.decode(defenc)<br/> res += s<br/> return res</pre></div><br/>И это третий питон, как ты говоришь, у которого всё в порядке с этой функцией.
Общий :: Python для экспертов :: Декодирование многострочного заголовка письма. Python 2.7
2016-12-22T22:47:50+02:00Master_Sergius172335В 2.7 это баг - <a href="http://stackoverflow.com/questions/20816766/python-email-header-decode-header-fails-for-multiline-headers">http://stackoverflow.com/questions/20816766/python-email-header-decode-header-fails-for-multiline-headers</a><br/><br/>Решение так и не найдено. Есть ли возможность какими-то другими путями решить данную проблему? Нужно именно для 2.7.