Использование python imaplib для "удаления" электронной почты из Gmail?

Можете ли вы удалить электронные письма с помощью imaplib? Если да, то как?

Ответы

Ответ 1

Используйте store метод (объекта IMAP4, представляющий ваше соединение), чтобы установить флаг r'\Deleted' на номер сообщения вы хотите удалить, как показывает пример в документации; затем expunge, чтобы фактически выполнить все удаленные таким образом помеченные.

Реализация IMAP в Gmail имеет по-разному разную семантику, но если вы хотите, вы можете настроить ее, чтобы вести себя гораздо больше, как традиционный IMAP (в том случае, когда вышеприведенная последовательность работает) - в основном вам нужно включить "Advanced IMAP Controls" , а затем следовать инструкциям в URL-адресе, который я дал, чтобы получить именно семантику IMAP, которую вы хотите (физически удалять, а не архивировать "удаленные" письма, ожидания или нет для expunge и т.д.).

Ответ 2

Удаление электронной почты через IMAP выполняется в два этапа:

  • отметьте один или несколько элементов для удаления: imap.store(msg_no, '+FLAGS', '\\Deleted')
  • удалить почтовый ящик: imap.expunge()

(imap - ваш объект IMAP4)

Ответ 3

imap.uid('STORE', list_of_msgno , '+FLAGS', '(\Deleted)')  
imap.expunge() 

i.e

imap.uid('STORE', '2, 4, 9, 12' , '+FLAGS', '(\Deleted)') 

Здесь (2, 4, 9, 12) являются uid сообщений, которые будут удалены.