使用 python imaplib 从 Gmail 中“删除”一封电子邮件?

Posted

技术标签:

【中文标题】使用 python imaplib 从 Gmail 中“删除”一封电子邮件?【英文标题】:Using python imaplib to "delete" an email from Gmail? 【发布时间】:2010-12-19 03:14:14 【问题描述】:

您可以使用 imaplib 删除电子邮件吗?如果有怎么办?

【问题讨论】:

截至 2012 年年中,除非您首先调整默认 imap 设置,否则以下答案均无效——请参阅 ***.com/questions/3988583/… 【参考方案1】:

通过 IMAP 删除电子邮件分两个阶段执行:

标记一项或多项删除:imap.store(msg_no, '+FLAGS', '\\Deleted') 删除邮箱:imap.expunge()

imap 是你的 IMAP4 对象)

【讨论】:

这是从我的收件箱中删除我的电子邮件。但是,如果我在 gmail 中搜索该项目,它仍然存在。任何想法?专门将它与gmail一起使用。取决于 python 版本或 gmail 设置有什么不同吗? 它会将电子邮件移至您的 Bin 标签,该标签每 30 天自动清理一次。【参考方案2】:

使用store 方法(代表您的连接的IMAP4 对象)在要删除的消息号上设置r'\Deleted' 标志,如文档中的示例所示;然后expunge 方法实际执行所有标记的删除。

Gmail 的 IMAP 实现在默认情况下具有微妙的不同语义,但如果您愿意 tweak 它的行为更像传统的 IMAP 实现(上述序列有效)——基本上您必须启用 " Advanced IMAP Controls”实验室,然后按照我提供的 URL 中的说明获得您想要的 IMAP 语义(物理删除而不是归档“已删除”邮件,等待或不等待expunge,等等)。

【讨论】:

【参考方案3】:
imap.uid('STORE', list_of_msgno , '+FLAGS', '(\Deleted)')  
imap.expunge() 

imap.uid('STORE', '2, 4, 9, 12' , '+FLAGS', '(\Deleted)') 

这里(2, 4, 9, 12)uid 将被删除的消息。

【讨论】:

UID 和我们从 imap.search 得到的一样吗?

以上是关于使用 python imaplib 从 Gmail 中“删除”一封电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

Imaplib从带有附件的gmail转发邮件(Python)

Imaplib:如何从 Gmail 中删除电子邮件?

使用 imaplib 和 oauth 连接 Gmail

使用 imaplib 和 oauth 连接 Gmail

如何在Python中执行IMAP搜索(使用Gmail和imaplib)?

如何使用 Python imaplib 为 IMAP (Gmail) 启用推送通知?