如何在imaplib python中使用UID删除电子邮件

问题描述

我正在尝试通过UID删除电子邮件。这是我正在访问的Hotmail电子邮件帐户。

这是我在做什么:

1。连接到电子邮件

imap = imaplib.IMAP4_SSL('imap-mail.outlook.com')
imap.login('my_email@hotmail.com',"password")

2。从电子邮件获取UID

resp,_ = imap.select('Inbox')
mbox_response,msgnums = imap.search( None,'FROM','email@sender.com')

messages = [] #Appending UID to this dictionary

for num in msgnums[0].split():
    msg_uid = imap.fetch(num,'UID')
    messages.append({'uid':imap.fetch(num,'UID')})

3。打印UID

print(messages)

我得到以下输出:

[{
  'uid': ('OK',[b'1 (UID 111)']),'uid': ('OK',[b'2 (UID 114)'])
}]

4。如何删除?

如何使用这些UID删除特定消息?

我尝试过这个没有成功...

for m in messages:
    imap.store(m['uid'],'+X-GM-LABELS','\\Trash')

我收到以下错误:

TypeError: can't concat tuple to bytes

解决方法

from imap_tools import MailBox
with MailBox('imap.mail.com').login('test@mail.com','pwd','INBOX/test') as mailbox:
    # DELETE all messages from current folder (INBOX/test)
    mailbox.delete([msg.uid for msg in mailbox.fetch()])

https://github.com/ikvk/imap_tools

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...