Imaplib:如何从Gmail删除邮件?
我正在尝试做一件很简单的事情,就是用Python的imaplib把一封邮件从收件箱移动到垃圾箱。不过,我遇到了一些问题,不知道怎么解决。
在连接并登录到服务器后,我选择了收件箱,然后这样获取了邮件的ID列表:
typ, ids = imap_object.search(None, 'INBOX')
ids_list = ids[0].split()
假设我从中选了一个ID,叫做X,并且假设这封邮件是某个对话的一部分。当我执行
imap_object.fetch (X, '(RFC822)')[1]
时,我能看到这条消息,正如我预期的那样,但当我执行
imap.store(X, '+FLAGS', r'(\Deleted)')
时,它却删除了整个对话,而不仅仅是这条消息!而且,我并不想完全删除这封邮件,我只是想把它移到垃圾箱,所以我尝试了:
imap.copy(X, '[Gmail]/Papelera')
imap.store(X, '+FLAGS', r'(\Deleted)')
imap.expunge()
但这样只把这条消息复制到了垃圾箱,然后又删除了整个对话,这样我就丢失了邮件!
问题:我该如何使用imaplib从Gmail中删除一封邮件,而不删除整个对话呢?
1 个回答
2
我觉得你的对话其实并没有被真正删除:默认情况下,通过IMAP删除一条消息时,它会把这条对话存档到最后一个文件夹里。你可以去设置里看看,路径是设置 -> 转发和POP/IMAP -> 当一条消息被标记为删除并从最后一个可见的IMAP文件夹中清除时: