以下代码是我对如何使用imaplib删除电子邮件的理解。它包括将电子邮件移至“垃圾箱”。在删除之前,我认为,这是使用gmail时的一项要求。
然而,正如您所看到的,我似乎正处于标签修改阶段。我已经在堆栈上查看了其他类似的主题,尽管尝试了多个建议的解决方案,但我还是无法解决这个问题。
>>> import imaplib
>>> server = imaplib.IMAP4_SSL(GMAIL_IMAP)
>>> server.login(EMAIL, PASSWORD)
('OK', [b'anautomatedemail@gmail.com authenticated (Success)'])
>>> server.select("INBOX")
('OK', [b'17'])
>>> status, uids = server.uid("search", None, "ALL")
>>> uids
[b'1 2 3 4 5 6 7 8 9 10 15 16 17 18 19 43 44']
uids = [uid for uid in uids[0].split()]
>>> uids
[b'1', b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9', b'10', b'15', b'16', b'17', b'18', b'19', b'43', b'44']
>>> server.store(uids[-1], "X-GM-LABELS", "\\Trash")
('OK', [None])
>>> server.store(uids[-1], "+FLAGS", "\\Deleted")
('OK', [None])
>>> server.expunge()
('OK', [None])
>>> server.close()
('OK', [b'Returned to authenticated state. (Success)'])
>>> server.logout()
('BYE', [b'LOGOUT Requested'])
答案 0 :(得分:1)
您正在混合UID和序列号。
您要求进行UID搜索,因此请回复UID。您还需要使用UID STORE:
server.uid("store", uids[-1], "X-GM-LABELS", "\\Trash")
等等其他商店命令。仅在Gmail上,当您以这种方式将其移至垃圾箱时,您无需费心使用\ Deleted和Expunge命令。服务器应该自动为您完成。