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

问题描述 投票:0回答:1

我正在使用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()
python python-2.7 gmail imap imaplib
1个回答
1
投票

总结一下问题:

Gmail对IMAP文件夹的模拟意味着包含许多标签的邮件会在许多文件夹中显示为单独的副本。某些邮件数据和元数据在文件夹之间共享,但其他元数据则不共享。

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

使用IMAP将邮件移动到废纸篓或Bin文件夹(通过MOVECOPY * 1),或添加废纸篓标签对应于为其提供废纸篓标签(并应自动删除所有其他标签)。然后它将坐在那里并在30天内清除。

要永久删除已有Trashed的消息,您需要select Bin或Trash文件夹(其名称取决于语言环境,您可能需要list才能找到它),然后添加\Deleted标志,该标志对应于永久删除。

在您的示例中,您已将邮件移至回收站,并从邮件中冗余删除了当前标签。您需要切换到“废纸篓”文件夹才能永久删除它。

* 1:如果您使用UID MOVEUID COPYUIDPLUS响应应返回Trash文件夹中的新UID,您可以使用该UID永久删除项目。

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

© www.soinside.com 2019 - 2024. All rights reserved.