Добрый день! Читаю почту с помощью
box = poplib.POP3(server, port)
OpenMailbox()
...
(resp, lines, octets) = box.retr(msgnum)
далее парсю содержимое с помощью
msgtext = "\n".join(lines) + "\n\n"
message = email.message_from_string(msgtext)
иногда в message["subject"] (или message["to"], message["from"]) попадается такое содержимое
=?UTF-8?B?0KHQsdC10YDQsdCw0L3QuiDQntC90LvQsNC50L0uINCe0LTQvdC+0YDQsNC3?=
=?UTF-8?B?0L7QstGL0Lkg0L/QsNGA0L7Qu9GMINC00LvRjyDQstGF0L7QtNCwIDE2Mzg=?=
=?UTF-8?B?Nw==?=
Бывает так же =?UTF-8?Q? и другие.
Это кириллица в теме или адресе. Например:
"Дмитрий" <dmitry@mail.ru>
Можно в ручную перекодировать такие заголовки с помощью функций:
quopri.decodestring(mystr) для =?UTF-8?Q?
base64.b64decode(mystr) для =?UTF-8?B?
но, для этого нужно: определить наличие проблемы (не ascii кодировка), в ручную выделять подстроку, в ручную определять кодировку и вызывать decodestring для subject, (а так же иногда для полей from, to). Может быть кто-то подскажет более простой способ чтения почты, решающий проблемы с различными кодировками в полях письмах?