【发布时间】:2018-03-20 10:41:44
【问题描述】:
我想将一封电子邮件从我的收件箱移到垃圾箱文件夹,我不想永久删除该电子邮件,我希望它在垃圾箱中等待 30 天才能被永久删除。
1.登录:
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login("example@gmail.com", "example")
2.得到我收件箱中的uid列表:
mail.select("inbox")
result, data = mail.uid('search', None, "ALL")
uidList = data[0].split()
3.处理了这些邮件:
#processEmails returns the uids of the emails that I need
#not really important for the purposes of this question
newUidList = processEmails(uidList)
4.删除newUidList中的邮件
for uid in newUidList:
mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')
我认为这条线mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)') 可以解决问题(因为这是我在互联网上找到的)。但是在这里问这个问题,您可能已经正确猜到它没有。
发生了什么?
当我执行此脚本时,电子邮件按计划从收件箱中消失了。但是当我访问垃圾文件夹时,那里什么都没有。所以我想也许他们被永久删除了。
但他们不是。当我看到我的电子邮件存储空间正在快速填满时,我注意到了这一点,这意味着我的电子邮件还在那里。
我进入“所有电子邮件”文件夹,它们就在那里。
所以我的问题是……
- 如何获得我想要的结果?这将通过其 UID 将电子邮件移动到垃圾文件夹。
- 为什么它没有像我想象的那样做?我要求对此行进行解释
mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')
最重要的是……
感谢您的意见:)
【问题讨论】:
-
您应该将电子邮件移至
IMAP/Trash而不是\\DeletedIIRC。可能只是Trash。 -
@Torxed 我尝试了你的建议:
mail.uid('STORE', uid, '+FLAGS', '(IMAP/Trash)'),mail.uid('STORE',b'249', '+FLAGS', '(Trash)')。也没有括号:mail.uid('STORE', uid, '+FLAGS', 'IMAP/Trash')和mail.uid('STORE',b'249', '+FLAGS', 'Trash')。他们甚至没有从收件箱中取出电子邮件。 -
试试
[Gmail]/Trash。如果这不起作用,我将把自己从这个问题中解脱出来。很久没有使用 IMAP 语法了,而且他们确实在十年间改变了它:P -
@Torxed 不幸的是,它没有用。无论如何谢谢:)
标签: python python-3.x email imaplib