Python 3:通过 uid (imaplib) 将电子邮件移至垃圾箱

0_j*_*ump 4 python email imaplib python-3.x

我想将一封电子邮件从我的收件箱移到垃圾箱文件夹,我不想永久删除该电子邮件,我希望它经历在垃圾箱中等待 30 天才能永久删除的过程。

1.登录:

mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login("example@gmail.com", "example")
Run Code Online (Sandbox Code Playgroud)

2.在我的收件箱中得到了uid列表:

mail.select("inbox")
result, data = mail.uid('search', None, "ALL")
uidList = data[0].split()
Run Code Online (Sandbox Code Playgroud)

3.处理过这些邮件:

#processEmails returns the uids of the emails that I need
#not really important for the purposes of this question

newUidList = processEmails(uidList)
Run Code Online (Sandbox Code Playgroud)

4.删除邮件中的邮件 newUidList

for uid in newUidList:
    mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')
Run Code Online (Sandbox Code Playgroud)

我认为这条线mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')可以解决问题(因为这是我在互联网上找到的)。但是在这里问这个问题,你可能已经正确地猜到了它没有。

发生了什么事?

当我执行此脚本时,电子邮件按计划从收件箱中消失了。但是当我访问垃圾文件夹时,那里什么也没有。所以我想也许它们被永久删除了。

但他们不是。当我看到我的电子邮件存储空间正在快速填满时,我注意到了这一点,这意味着我的电子邮件仍在某处。

我进入“所有电子邮件”文件夹,它们就在那里。

所以我的问题是...

  1. 我如何得到我想要的结果?这是通过其 UID 将电子邮件移动到垃圾箱文件夹。
  2. 为什么它没有做我认为它会做的事情?我要求解释这条线mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')

而最重要的是...

谢谢您的意见 :)

0_j*_*ump 6

我找到了答案!

所以对于任何有同样问题的人,我发现了如何通过 uid 将您的电子邮件移至垃圾箱。回到我的帖子,我应该把mail.uid('STORE', uid, '+X-GM-LABELS', '\\Trash')而不是mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')

你有它:)

  • @Torxed 你对“垃圾”部分的看法是正确的。但你忘记的部分是“+X-GM-LABELS”而不是“+FLAGS” (2认同)