Python 如何使用imaplib和gmail将电子邮件从所有邮件移动到垃圾箱
我想用imaplib和gmail从收件箱中删除一封电子邮件。问题是,电子邮件已从收件箱移动到“所有邮件”文件夹,但我希望将其发送到“垃圾箱/垃圾箱”文件夹 示例代码:Python 如何使用imaplib和gmail将电子邮件从所有邮件移动到垃圾箱,python,gmail,imap,imaplib,Python,Gmail,Imap,Imaplib,我想用imaplib和gmail从收件箱中删除一封电子邮件。问题是,电子邮件已从收件箱移动到“所有邮件”文件夹,但我希望将其发送到“垃圾箱/垃圾箱”文件夹 示例代码: #!/usr/bin/env python import imaplib imap_host = 'imap.gmail.com' imap_user = 'myemail@gmail.com' imap_pass = 'mypass' imap = imaplib.IMAP4_SSL(imap_host) imap.lo
#!/usr/bin/env python
import imaplib
imap_host = 'imap.gmail.com'
imap_user = 'myemail@gmail.com'
imap_pass = 'mypass'
imap = imaplib.IMAP4_SSL(imap_host)
imap.login(imap_user, imap_pass)
status, data = imap.select('INBOX')
status, mail_id = imap.search(None, '(SUBJECT "My subject")')
status, msg_header = imap.fetch(mail_id[0], '(BODY[TEXT])')
saveFile = open('sample.txt', 'w')
saveFile.write(str(msg_header))
saveFile.close()
print "Received email body!"
# Delete the email
print "Deleting the email..."
imap.store(mail_id[0], '+FLAGS', '\\Deleted')
imap.expunge()
print "Email deleted!"
我想将电子邮件正文保存到一个新文件中,然后删除该电子邮件(此电子邮件地址上只有一封电子邮件)。Gmail不允许直接从收件箱中删除电子邮件 他们在这里提到了完整的电子邮件删除行为 在gmail中,带有删除标志的imap存储仅适用于垃圾和垃圾邮件 imap.store(邮件id[0]、“+标志”、“已删除”) 似乎他们是故意这样做的,以避免从收件箱和自定义文件夹中意外删除 如果您想从收件箱或自定义文件夹中删除电子邮件,您需要像下面这样对电子邮件应用垃圾标签
。存储1+X-GM-LABELS(\Trash)您需要识别垃圾箱文件夹的名称,然后将邮件移动到那里。我相信有一个imap_move()函数。这个答案与您链接到的支持文档中谷歌的说法相矛盾。发送
UID存储是完全可以的+标志\已删除
。文档中说,即使在这之后,邮件仍将保留在“All messages”虚拟文件夹中。我认为“UID STORE…+FLAGS\Deleted”对来自AllMail的电子邮件不起作用。虽然“uid存储”操作成功,但实际上Gmail不会为所有邮件添加“\Deleted”标志。