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

标签 python python-2.7 gmail imap 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 标志将从邮件中删除当前文件夹/标签。如果这是最后一个标签,则该邮件将被存档并可在所有邮件文件夹中找到。

使用 IMAP 将邮件移至“废纸篓”或“垃圾箱”文件夹(通过 MOVECOPY*1),或添加“废纸篓”标签相当于给它贴上垃圾标签(并且应该自动删除所有其他标签)。然后它会留在那里并在 30 天内被清除。

要永久删除已删除的邮件,您需要选择“Bin”或“Trash”文件夹(其名称取决于区域设置,您可能需要list才能找到它),然后添加 \Deleted 标志,该标志对应于永久删除。

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

*1:如果您使用 UID MOVEUID COPYUIDPLUS 响应应返回您在“废纸篓”文件夹中的新 UID。可用于永久删除项目。

注意:Gmail 网络界面中的 IMAP 设置 UI 理论上具有自定义此行为的设置,但根据我的经验,更改这些设置没有实际效果。

关于python - 使用 Python imaplib 永久删除 Gmail 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55518565/

相关文章:

python - 使用 subprocess.Popen 从 python 调用 pandoc

python - 找不到 SQL 服务器

python - 浮点错误的发生以及如何预防

python - pandas 中的 GroupBy 按日期范围划分

python - 为什么我的埃拉托色尼筛法处理整数比处理 boolean 值更快?

Python 的 self.parse - 我们为什么使用它?

python - 使用 python 访问 google

node.js - 使用 Mandrill 发送时是否可以指定我自己的 Message-Id 电子邮件 header ?

c++ - 如何在 C++ 中使用 yahoo 或 gmail 发送电子邮件

java - 如何从JAVAMAIL中的不同文件夹中获取电子邮件?