Используя imaplib, как я могу создать почтовый ящик без атрибута \\ NoSelect - PullRequest
2 голосов
/ 09 мая 2011

Я пытаюсь создать деревья каталогов в учетной записи IMAP gmail.Я использовал команду «create ()» в imaplib, но, похоже, он добавляет атрибут \\ Noselect в созданную папку.Это нарушает функцию вложенных меток в gmail - есть ли способ удалить атрибут \\ Noselect или вообще не создавать его?

Пример:

>> imap.create("foo/bar")
('OK', [b'Success'])
>> imap.list()
[b'(\\Noselect \\HasChildren) "/" "foo"', b'(\\HasNoChildren) "/" "foo/bar"',...

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

Я нашел решение - Не уверен, что это «лучший» способ.При создании вложенного почтового ящика в одной команде почтовые ящики верхнего уровня автоматически помечаются \\ Noselect.Хотя это может быть хакерским, вы можете убрать этот флаг, явно создав каждый уровень.

Пример:

folder = "abc/def/ghi/jkl"

target = ""

for level in folder.split('/'):
    target += "{}/".format(level)
    imap.create(target)

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

2 голосов
/ 22 января 2013

bjeanes: решение Сэма работает для меня до тех пор, пока я не использую конечный разделитель иерархии.

Итак, если я хочу создать вложенную папку a / b / c, я сначала создаю просто "a"».Если я делаю xlist, у него установлен флаг hasNoChildren.Теперь я создаю «a / b», и в xlist теперь будет отображаться «a» с установленным флагом «hasChildren», а «a / b» с установленным флагом «hasNoChildren».Наконец, я создаю «a / b / c», и теперь у «b» также установлен флаг «hasChildren».Это подтверждается и взглядом на веб-интерфейс gmail.

Сэм: спасибо, что выяснили это и опубликовали решение.«Хаки» бьет «не работает».: ^)

...