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

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

【问题讨论】:

标签: python email imap


【解决方案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 得到的一样吗?
    猜你喜欢
    • 2017-05-14
    • 2019-08-26
    • 2017-01-04
    • 2011-03-02
    • 2015-10-21
    • 2011-04-28
    • 2011-04-01
    • 1970-01-01
    • 2012-12-11
    相关资源
    最近更新 更多