小编典典

使用imaplib删除gmail中的电子邮件时出现问题

python

我尝试从收件箱文件夹中删除邮件,但是,但是当我切换到“所有邮件”文件夹时,删除将不起作用。expunge()方法返回('OK',[None])并且消息未删除:

>>>import imaplib
>>>server = imaplib.IMAP4_SSL('imap.gmail.com','993')
>>>server.login('likvidator89@gmail.com','Password')
>>>server.select('inbox')
>>>for i in server.search(None,'all')[1][0].split():
...    print i+"\n"+server.fetch(i,'(BODY[HEADER.FIELDS (Subject)])')[1][0][1]
...
#  that how i know what UID hame my message? I select by subject
#....
#28
#Subject: 1 Question Has 1 Answer - Stack Overflow
#
#
#29
#Subject: 2222222222
#...
>>>server.store(29,'+FLAGS','\\Deleted')
#('OK', ['29 (FLAGS (\\Seen \\Deleted))'])
>>>server.expunge()
#('OK', ['29'])
>>> server.select('[Gmail]/All Mail')
('OK', ['47'])
>>> for i in server.search(None,'all')[1][0].split():
...  print i+"\n"+server.fetch(i,'(BODY[HEADER.FIELDS (Subject)])')[1][0][1]
... 
#....
#
#46
#Subject: 2222222222
#
#
#47
#Subject: 3333333333333333
#
#....
>>> server.store(47,'+FLAGS','\\Deleted')
('OK', ['47 (FLAGS (\\Seen \\Deleted))'])
>>> server.expunge()
('OK', [None])

阅读 187

收藏
2021-01-20

共1个答案

小编典典

就像在gmail博客网站上所说的那样,Google对IMAP的实现有些不同。当您按照说明获得更多常用语义时,是否有帮助?

对于想让Gmail的IMAP像传统IMAP提供程序一样工作的人来说,还有一些晦涩的选项:当不再可以通过IMAP看到自动删除或垃圾邮件时,可以关闭它们。

IMAP协议允许将邮件标记为删除,这是一种边缘状态,其中邮件仍存在于文件夹中,但计划在下次删除文件夹时将其删除。在我们的标准IMAP实施中,当您将邮件标记为已删除时,Gmail不会在该状态下徘徊-
它会立即从文件夹中删除(或自动删除)该邮件。如果要进行两阶段删除,请在启用此练习后,在“设置”中的“转发和POP /
IMAP”标签下选择“不自动删除邮件”。

同样,大多数IMAP系统也不共享Gmail的邮件存档概念(将邮件发送到[Gmail] / All Mail文件夹,而不是[Gmail] /
Trash)。如果您希望将未保留在其他任何可见IMAP文件夹中的已删除邮件发送到[Gmail]
/垃圾箱,则可以使用“高级IMAP控件”以这种方式设置自己的偏好。在“转发和POP / IMAP”标签的“
IMAP访问:”部分中,找到“从最后一个可见的IMAP文件夹中删除邮件时:”选项。选择“将邮件移至Gmail废纸rash”。如果您想更进一步,可以选择“立即永久删除邮件”。

2021-01-20