2015-02-23 2 views
0

Я хочу удалить электронное письмо из папки «Входящие» с помощью imaplib и gmail. Проблема в том, что письмо перемещается из папки «Входящие» в «Все», но я хочу, чтобы он был отправлен в папку Trash/Bin.Как перенести сообщение электронной почты из «Все письма в корзину» с помощью imaplib и gmail

Пример кода:

#!/usr/bin/env python 

import imaplib 

imap_host = 'imap.gmail.com' 
imap_user = '[email protected]' 
imap_pass = 'mypass' 

imap = imaplib.IMAP4_SSL(imap_host) 

imap.login(imap_user, imap_pass) 

status, data = imap.select('INBOX') 

status, mail_id = imap.search(None, '(SUBJECT "My subject")') 

status, msg_header = imap.fetch(mail_id[0], '(BODY[TEXT])') 
saveFile = open('sample.txt', 'w') 
saveFile.write(str(msg_header)) 
saveFile.close() 

print "Received email body!" 

# Delete the email 
print "Deleting the email..." 
imap.store(mail_id[0], '+FLAGS', '\\Deleted') 
imap.expunge() 
print "Email deleted!" 

Я хочу, чтобы сохранить тело электронной почты в новый файл, то удалите эту электронную почту (Там будет только одна электронная почта на этот адрес электронной почты).

+1

Вам нужно будет определить имя папки «Корзина», а затем переместите там сообщение. Я считаю, что есть функция imap_move(). – Max

ответ

0

Gmail не позволяет удалять электронные письма непосредственно из INBOX.

Они упоминали полную электронную почту удалить поведение здесь https://support.google.com/mail/answer/78755?hl=en

В Gmail IMAP магазине со стиранием флагами работает только для корзины и спама.

imap.store (mail_id [0], '+ ФЛАГИ', '\ Deleted')

Кажется, что они сделали это намеренно для предотвращения случайного удаления из папки Входящие и пользовательских папок.

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

. STORE 1 + X-GM-LABELS (\ Trash)

+0

Этот ответ противоречит тому, что Google говорит в документе поддержки, с которым вы связались. Вполне нормально отправлять 'UID STORE ... + FLAGS \ Deleted'. В документации указано, что сообщение останется в виртуальной папке «Все сообщения» даже после этого. –

+0

Я думаю, что «UID STORE ... + FLAGS \ Deleted» не работает с сообщениями электронной почты AllMail. Хотя действие «uid store» является успешным, на самом деле Gmail не добавляет флаги «\ Deleted» для писем AllMail. –