Работа с именем почтового ящика IMAP case caseitivty - PullRequest
2 голосов
/ 10 июня 2011

У меня есть скрипт на python, использующий imaplib, который подключается к учетной записи Gmail и сортирует электронные письма по тегам «+», найденным в адресе электронной почты. Например: электронные письма, отправленные на myaccount+root.foo.bar@gmail.com, перемещаются в корневой каталог \ foo \ bar.

Моя логика выглядит следующим образом: извлечь теги -> попытаться создать папки -> скопировать сообщение в папку.

Иногда приходит электронное письмо с одинаковыми тегами, но с другим регистром. myaccount+root.FOO.BAR@gmail.com, например, и приводит к следующему выводу:

#Attempting to creating folder 'root/FOO/BAR'
('NO', ['[ALREADYEXISTS] Folder name conflicts with existing folder name. (Failure)'])
#Copying message to folder 'root/FOO/BAR'
('NO', ['[TRYCREATE] No folder root/FOO/BAR (Failure)'])

Таким образом, не удается создать папку, поскольку папка с таким именем уже существует (только в другом регистре), но копирование не выполняется, поскольку явная папка не существует.

Есть ли какой-нибудь умный способ выяснить правильный регистр существующей папки, чтобы я мог переместить сообщение без проблем?

Примечание. Это не так просто, как просто перевести все теги в нижний регистр. Пользователь подключается к учетной записи с помощью почтового клиента и вручную создает папки с любым регистром, который имеет для них смысл в данный момент.

1 Ответ

2 голосов
/ 10 июня 2011

То есть Google жалуется, что папка уже существует, но затем выдает ошибку, когда вы пытаетесь что-то перенести в нее? Потрясающе.

IMAP имеет команду «СПИСОК» для просмотра списка доступных почтовых ящиков (папок):

http://tools.ietf.org/html/rfc3501#section-6.3.8

Как получить доступ, который зависит от вашей клиентской библиотеки IMAP. Вот пара примеров .

...