使用Python imaplib永久删除Gmail电子邮件

时间:2019-04-04 14:31:14

标签: python python-2.7 gmail imap imaplib

我正在使用Gmail规则将某些电子邮件标记为“删除”,以标记为永久删除。有了这个python脚本,我就可以成功地将它们移到Gmail箱中,但是一旦它们在那里就无法永久删除。

有什么想法吗?我曾尝试在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()

1 个答案:

答案 0 :(得分:1)

总结问题:

Gmail对IMAP文件夹的仿真意味着带有许多标签的邮件在许多文件夹中显示为单独的副本。一些消息数据和元数据在文件夹之间共享,而其他元数据则不共享。

在邮件上放置\Deleted标志会从邮件中删除当前文件夹/标签。如果这是最后一个标签,则此消息将被存档,并且可以在All Mail文件夹中找到。

使用IMAP将邮件移动到“垃圾箱”或“ bin”文件夹中(通过MOVECOPY * 1 ),或添加“垃圾箱”标签相当于将其作为垃圾箱标签(并应自动删除所有其他标签)。然后它将坐在那里,并在30天内清除。

要永久删除已被删除的邮件,您需要select Bin或Trash文件夹(其名称取决于区域设置,您可能需要list才能找到它),然后添加{ {1}}标志,对应于永久删除。

在您的示例中,您已将邮件移至垃圾箱,并从邮件中多余地删除了当前标签。您需要切换到“废纸folder”文件夹才能将其永久删除。

* 1:如果您使用\DeletedUID MOVE,则UID COPY响应应在“废纸folder”文件夹中返回新的UID,可用于永久删除项目。

注意:理论上,Gmail网络界面中的IMAP设置用户界面具有可自定义此行为的设置,但以我的经验,更改它们并没有实际效果。