Python 3:通过 uid 将电子邮件移至回收站 (imaplib)

Python 3: Move email to trash by uid (imaplib)

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

1.Logged 在:

mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login("example@gmail.com", "example")

2.Got 我收件箱中的 uid 列表:

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

3.Processed 这些电子邮件:

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

newUidList = processEmails(uidList)

4.Delete newUidList

中的电子邮件
for uid in newUidList:
    mail.uid('STORE',uid, '+FLAGS', '(\Deleted)')

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

发生了什么事?

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

但事实并非如此。当我看到我的电子邮件存储空间 space 正在快速填满时,我注意到了这一点,这意味着我的电子邮件仍在某处。

我进入 "All Emails" 文件夹,它们就在那里。

所以我的问题是...

  1. 如何获得我想要的结果?这是通过 UID 将电子邮件移动到垃圾文件夹。
  2. 为什么它没有按照我的预期去做?我要求对这一行进行解释 mail.uid('STORE',uid, '+FLAGS', '(\Deleted)')

最重要的是...

感谢您的意见:)

我找到答案了!

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

就是这样:)