2016-12-29 10 views
0

В IMAP я пытаюсь выбрать папку на испанском и французском языках, как показано ниже. Я знаю, что под пользователем i18n существует папка - Español, а также папка Français. Но я не могу выбрать папку для выполнения операций выборки и поиска. Пожалуйста, дайте мне знать, может ли кто-нибудь помочь мне в этом.Imap выбрать папку в интернационализированных языках

telnet 0 <Port_num> 

. login i18n i18n 
. OK User i18n logged in 
. select Español 
. NO [NONEXISTENT] Mailbox does not exist 
. select Français 
. NO [NONEXISTENT] Mailbox does not exist 

Если есть способ, в котором операция может быть выполнена с питоном или Perl тоже будет хорошо.

ответ

1

Это из-за причуды IMAP, чтобы включить представление символов вне US-ASCII «кодирования» в имени папок. Короче говоря, вы должны использовать модифицированную кодировку UTF-7, заменяющую символ + на &. Вы можете получить более подробное объяснение в документе section 5.1.3 RFC 3501, который определяет протокол IMAP.

Я думаю, что код, чтобы получить имена папок для вашего случая использования будет что-то вроде:

Python 3.5.2+ (default, Dec 13 2016, 14:16:35) 
[GCC 6.2.1 20161124] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import codecs 
>>> codecs.encode("Español", encoding="utf-7").replace(b"+", b"&") 
b'Espa&APE-ol' 
>>> codecs.encode("Français", encoding="utf-7").replace(b"+", b"&") 
b'Fran&AOc-ais' 

Я должен признать, что я не работал так много с IMAP, так что, может быть, правила Я не совсем понимаю. Но это должно заставить вас идти.

+0

Это была потрясающая помощь! благодаря –

 Смежные вопросы

  • Нет связанных вопросов^_^