使用python imaplib从Gmail“删除”邮件?

14 投票
3 回答
24212 浏览
提问于 2025-04-15 16:14

你能用imaplib删除邮件吗?如果可以的话,怎么做呢?

3 个回答

11
imap.uid('STORE', list_of_msgno , '+FLAGS', '(\Deleted)')  
imap.expunge() 

也就是说

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

这里的 (2, 4, 9, 12) 是要被删除的消息的 uid(唯一标识符)。

19

通过IMAP删除邮件分为两个步骤:

  • 第一步是标记一个或多个邮件为待删除状态:imap.store(msg_no, '+FLAGS', '\\Deleted')
  • 第二步是清理邮箱,真正删除这些邮件:imap.expunge()

(这里的imap是你用来连接IMAP服务器的对象)

22

使用 store 方法(这个方法是你连接的 IMAP4 对象的一部分)来给你想删除的邮件设置 r'\Deleted' 标记,就像文档中的例子那样;然后用 expunge 方法来真正执行所有标记为删除的操作。

Gmail 对 IMAP 的实现有些微妙的不同,默认情况下是这样的,但如果你想的话,可以 调整 它,让它的行为更像传统的 IMAP 实现(这样上面的步骤就能正常工作)——基本上你需要启用“高级 IMAP 控制”这个实验功能,然后按照我给的链接上的说明去设置,确保你得到想要的 IMAP 行为(比如物理删除而不是归档“已删除”的邮件,是否等待 expunge 等等)。

撰写回答