猿问

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

我正在使用 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()


狐的传说
浏览 532回答 1
1回答

德玛西亚99

总结一下问题:Gmail 对 IMAP 文件夹的模拟意味着带有许多标签的邮件在许多文件夹中显示为单独的副本。一些邮件数据和元数据在文件夹之间共享,但其他元数据不是。将\Deleted标志放在邮件上会从邮件中删除当前文件夹/标签。如果这是最后一个标签,则此邮件将被归档并在All Mail文件夹中可用。使用 IMAP 将邮件移动到垃圾箱或 Bin 文件夹(通过MOVE或COPY*1),或添加垃圾箱标签对应于为其提供垃圾箱标签(并应自动删除所有其他标签)。然后它将坐在那里并在 30 天内被清除。要永久删除已删除的邮件,您需要到selectBin 或 Trash 文件夹(其名称取决于区域设置,您可能需要list找到它),然后添加\Deleted标志,这对应于永久删除。在您的示例中,您已将邮件移至垃圾箱,并从邮件中多余地删除了当前标签。您需要切换到废纸篓文件夹以将其永久删除。*1:如果您使用UID MOVE或UID COPY,则UIDPLUS响应应返回垃圾箱文件夹中的新 UID,您可以使用该 UID 永久删除项目。注意:Gmail 网络界面中的 IMAP 设置 UI 理论上具有自定义此行为的设置,但根据我的经验,更改它们没有实际效果。
随时随地看视频慕课网APP

相关分类

Python
我要回答