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

2024-09-30 01:19:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

有什么想法吗?我试过在gmailimap设置中设置auto-expunge开关,但没有改变任何东西。在

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()

Tags: store标记脚本data规则email邮件mail
1条回答
网友
1楼 · 发布于 2024-09-30 01:19:34

总结一下这些问题:

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

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

使用IMAP将邮件移动到Trash或Bin文件夹(通过MOVECOPY*1),或者添加垃圾箱标签对应于给它一个垃圾箱标签(并且应该自动删除所有其他标签)。然后它会坐在那里,30天内清洗干净。在

要永久删除已丢弃的邮件,您需要select垃圾箱或垃圾箱文件夹(其名称取决于区域设置,您可能需要list才能找到它),然后添加与永久删除相对应的\Deleted标志。在

在您的示例中,您已将邮件移到垃圾箱中,并从邮件中冗余地删除了当前标签。你需要切换到废纸篓文件夹来永久删除它。在

*1:如果您使用UID MOVEUID COPY,则UIDPLUS响应应返回垃圾箱文件夹中的新UID,您可以使用该UID永久删除项目。在

注意:Gmail的web界面中的IMAP设置界面理论上有定制这种行为的设置,但根据我的经验,更改这些设置并没有实际效果。

相关问题 更多 >

    热门问题