24-删除电子邮件
18.5.7 删除电子邮件
要删除电子邮件,就向 IMAPClient
对象的 delete_messages()
方法传入一个消息UID的列表。这为电子邮件加上\Deleted标志。调用 expunge()
方法,将永久删除当前选中的文件夹中带\Deleted标志的所有电子邮件。请看下面的交互式环境的例子:
❶ >>> imapObj.select_folder('INBOX', readonly=False)
❷ >>> UIDs = imapObj.search(['ON 09-Jul-2019'])
>>> UIDs
[40066]
>>> imapObj.delete_messages(UIDs)
❸ {40066: ('\\Seen', '\\Deleted')}
>>> imapObj.expunge()
('Success', [(5452, 'EXISTS')])
这里,我们调用了 IMAPClient
对象的 select_folder()
方法,传入 'INBOX'
作为第一个参数,选择了收件箱。我们也传入了关键字参数 readonly=False
,这样我们就可以删除电子邮件❶了。我们搜索收件箱中的特定日期收到的消息,将返回的消息ID保存在UIDs中❷。调用 delete_message()
并传入UIDs以返回一个字典,其中每个键-值对是一个消息 ID 和消息标志的元组,它现在应该包含\Deleted标志❸。然后调用 expunge()
,永久删除带\Deleted标志的邮件。如果清除邮件没有问题,就返回一条成功信息。请注意,一些电子邮件提供商,如Gmail,会自动清除用 delete_messages()
删除的电子邮件,而不是等待来自IMAP客户端的 expunge
命令。