2016-04-23 129 views
2

我是一個初學者,在所有這些編碼的東西和作爲項目的一部分我試圖寫一些Python代碼,讀取第一個未讀電子郵件(最古老的電子郵件首先),打印內容,然後從收件箱刪除電子郵件,這裏是我的代碼,但我不能讓它刪除電子郵件,我一直在Google上搜索幾個小時,沒有任何地方。通過python和IMAP4從收件箱中刪除電子郵件

#readyourmail.py 
import imaplib 
import email 
def readmail(): 
    try: 
     mail = imaplib.IMAP4_SSL('imap.gmail.com') 
     mail.login('email','password') 
     mail.select('inbox') 
     result, data = mail.uid('search', None, "ALL") 
     latest_email_uid = data[0].split()[0] 
     result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)') 
     raw_email = email_data[0][1] 
     raw_email_string = raw_email.decode('utf-8') 
     email_message = email.message_from_string(raw_email_string) 
     for part in email_message.walk(): 
      if part.get_content_type() == "text/plain": 
       body = part.get_payload(decode=True) 
       print(body.decode('utf-8')) 
      else: 
       continue 
     mail.store(latest_email_uid,'+FLAGS','\\Deleted') 
     mail.expunge() 
    except: 
     print("No valid emails") 

感謝您的幫助!

回答

1

由於您使用UID命令來提取郵件,因此您必須使用UID coomand將其刪除。

嘗試下面的代碼。

mail.uid('STORE', latest_email_uid , '+FLAGS', '(\Deleted)') 
mail.expunge()