簡體   English   中英

使用 Python imaplib 永久刪除 Gmail 電子郵件

[英]Permanently delete Gmail email using Python imaplib

我正在使用 Gmail 規則將某些電子郵件標記為“刪除”以標記為永久刪除。 使用這個 python 腳本,我可以成功地將它們移動到 Gmail Bin,但是一旦它們在那里,我就無法永久刪除它們。

有任何想法嗎? 我嘗試在 Gmail imap 設置中設置自動刪除,但沒有改變任何東西。

mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)

try:
    rv, data = mail.login(EMAIL_ACCOUNT, EMAIL_PASS)
except imaplib.IMAP4.error as e:
    print "LOGIN FAILED!!! "
    print e
    sys.exit(1)

print rv, data

mail.select("delete")
type, data = mail.search(None, 'ALL')

mail.store("1:*",'+X-GM-LABELS', '\\Trash')
mail.store("1:*", "+FLAGS", '\\Deleted')
mail.expunge()

總結一下問題:

Gmail 對 IMAP 文件夾的模擬意味着帶有多個標簽的郵件在多個文件夾中顯示為單獨的副本。 某些消息數據和元數據在文件夾之間共享,但其他元數據則不共享。

在郵件上放置\Deleted標志會從郵件中刪除當前文件夾/標簽。 如果這是最后一個標簽,則此郵件將被歸檔並在“ All Mail文件夾中可用。

使用 IMAP 將郵件移動到垃圾箱或 Bin 文件夾(通過MOVECOPY *1 ),或添加垃圾箱標簽對應於為其提供垃圾箱標簽(並且應該自動刪除所有其他標簽)。 然后它將坐在那里並在 30 天內被清除。

要永久刪除已刪除的郵件,您需要select Bin 或 Trash 文件夾(其名稱取決於區域設置,您可能需要list才能找到它),然后添加對應於永久刪除的\Deleted標志。

在您的示例中,您已將郵件移至垃圾箱,並從郵件中多余地刪除了當前標簽。 您需要切換到垃圾箱文件夾才能將其永久刪除。

*1:如果您使用UID MOVEUID COPYUIDPLUS響應應返回垃圾文件夾中的新 UID,您可以使用該 UID 永久刪除項目。

注意:Gmail 網絡界面中的 IMAP 設置 UI 理論上具有自定義此行為的設置,但根據我的經驗,更改它們並沒有實際效果。

我遇到了同樣的問題,所以這里有一個適合我的完整代碼。
希望它會幫助某人。
重要提示:您的電子郵件必須事先移至垃圾箱!

connection = imaplib.IMAP4_SSL('imap.gmail.com')
connection.login("xxxxx@gmail.com", "xxxxx@gmail.com's account app pwd")
connection.select(mailbox='"[Gmail]/Trash"', readonly=False)
connection.store("1:*", '+FLAGS', '\\Deleted')
connection.expunge()
connection.close()  # close and logout the connection
connection.logout()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM