繁体   English   中英

如何使用 imaplib 和 gmail 将电子邮件从所有邮件移动到垃圾箱

[英]How can I move an email message from All mail to Trash using imaplib and gmail

我想使用 imaplib 和 gmail 从我的收件箱中删除一封电子邮件。 问题是电子邮件已从收件箱移至所有邮件文件夹,但我希望将其发送到垃圾箱/Bin 文件夹。

示例代码:

#!/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 不允许直接从收件箱中删除电子邮件。

他们在这里提到了完整的电子邮件删除行为https://support.google.com/mail/answer/78755?hl=en

在带有删除标志的 gmail imap 存储中,仅适用于垃圾邮件和垃圾邮件。

imap.store(mail_id[0], '+FLAGS', '\Deleted')

似乎他们故意这样做是为了避免从收件箱和自定义文件夹中意外删除。

如果您想从收件箱或自定义文件夹中删除电子邮件,您需要像这样将垃圾标签应用于电子邮件

. 商店 1 +X-GM-LABELS (\垃圾)

我知道这是一个老话题,但我遇到了同样的问题,在这里我的解决方案是将 gmail 中的收件箱中的所有消息移动到垃圾箱

connection = imaplib.IMAP4_SSL('imap.gmail.com')
connection.login("xxxxx@gmail.com", "password")
connection.select(mailbox='"INBOX"', readonly=False)
connection.store("1:*", '+X-GM-LABELS', '\\Trash')
connection.close()  # close and logout the connection
connection.logout()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM