IMAP по умолчанию не отправляет 8-битные символы, а оригинальный протокол определяет почтовые ящики с неанглийскими символами ASCII для кодирования UTF-7 (с некоторыми изменениями).Это &BB8EMAQ,BDoEMA-
, который вы видите.
Вы можете добавить кодировку / декодирование UTF-7 в свое приложение или, если ваш сервер достаточно новый, в режиме ENABLE
UTF-8.Примечание: включение UTF-8 может получить Unicode в тех местах, которые вы не ожидаете.Gmail поддерживает это расширение.
> a LIST "" *
< ...
< * LIST (\HasChildren) "/" "&AOk-cole"
> b ENABLE UTF8=ACCEPT
< ...
< * LIST (\HasChildren) "/" "école"
Вот как ломается строка UTF-7:
[Gmail]/&BB8EMAQ,BDoEMA-
& и - переход в режим декодирования и выход из него, так что это выглядит как
"[Gmail]/" + mUTF7decode("BB8EMAQ,BDoEMA")
А вот Python 3 один лайнер, который декодирует это.С добавлением "===" для соответствия требованиям дополнения base64 и altchars
, указывающим последние два символа кодировки base64:
>>> import base64; base64.b64decode("BB8EMAQ,BDoEMA===", altchars="+,").decode("utf-16be")
'Папка'