Imaplib: как удалить письмо из Gmail? - PullRequest
8 голосов
/ 10 июня 2010

Я пытаюсь сделать что-то столь же простое, как перемещение электронной почты из папки «Входящие» в корзину с помощью imaplib из python. Однако у меня есть некоторые проблемы, и я не знаю, как их решить.

После подключения и входа на сервер я выбираю почтовый ящик INBOX и получаю список идентификаторов следующим образом:

typ, ids = imap_object.search(None, 'INBOX')
ids_list = ids[0].split()

Предположим, я взял оттуда Id, и предположим, что это электронное письмо является частью разговора. Когда я делаю

imap_object.fetch (X, '(RFC822)')[1]

Я могу видеть только сообщение, как я и ожидал, но когда я делаю

imap.store(X, '+FLAGS', r'(\Deleted)')

удаляет весь разговор, а не только сообщение! Кроме того, я не хочу полностью удалять электронную почту, я хочу отправить ее в корзину, поэтому я попытался:

imap.copy(X, '[Gmail]/Papelera')
imap.store(X, '+FLAGS', r'(\Deleted)')
imap.expunge()

но он копирует только сообщение в корзину, а затем удаляет весь разговор, поэтому я теряю электронные письма!

ВОПРОС : Как я могу удалить электронное письмо из Gmail, используя imaplib, не удаляя весь разговор?

1 Ответ

2 голосов
/ 07 апреля 2011

Я полагаю, что ваш разговор на самом деле не удален: по умолчанию удаление сообщения по IMAP из последней папки архивирует диалог.Посмотрите на Настройки -> Пересылка и POP / IMAP -> Когда сообщение помечено как удаленное и удаленное из последней видимой папки IMAP:

...