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

9

我正在尝试使用python的imaplib将电子邮件从收件箱移动到垃圾箱,这似乎是很简单的操作。但是,我遇到了一些问题,不知道该如何解决。

连接并登录服务器后,我选择了INBOX邮箱,并通过以下方式获取id列表:

typ, ids = imap_object.search(None, 'INBOX')
ids_list = ids[0].split()

假设我从中取出一个ID,X,并且假设该电子邮件是对话的一部分。当我这样做时:

imap_object.fetch (X, '(RFC822)')[1]

我只看到了我期望的消息,但当我执行时,保留HTML标记。
imap.store(X, '+FLAGS', r'(\Deleted)')

它会删除所有的对话,而不仅仅是一条消息!此外,我不想完全删除邮件,我想把它发送到垃圾箱,所以我尝试了以下方法:

imap.copy(X, '[Gmail]/Papelera')
imap.store(X, '+FLAGS', r'(\Deleted)')
imap.expunge()

但是它只是将信息复制到垃圾箱,之后删除整个对话,所以我丢失了邮件!

问题:如何使用imaplib从Gmail中删除电子邮件,而不删除整个对话?


在回答之前,请注意您删除的对话可能仍然可以在“所有邮件”文件夹中(通过Web界面)查看。 - tzot
1个回答

2
我相信您的对话并没有真正被删除:默认情况下,从最后一个文件夹中通过IMAP删除消息会归档该对话。请查看设置 -> 转发和POP/IMAP -> 当将消息标记为已删除并从最后一个可见的IMAP文件夹中清除时:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接