Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t使用imaplib删除消息_Python_Gmail Imap_Imaplib - Fatal编程技术网

Python Can';t使用imaplib删除消息

Python Can';t使用imaplib删除消息,python,gmail-imap,imaplib,Python,Gmail Imap,Imaplib,我使用此代码从电子邮件中删除邮件: mail.store(id, '+FLAGS', '\\Deleted') mail.expunge() 这个代码返回“Ok” (“好的,[无]) 我还将gmail帐户中的设置更改为: 但我还是不能删除messeges。为什么?我解决了我的问题,但得到了另一个问题,如果有人用另一个答案回答这个问题,我会很高兴:) 当我搜索要删除的邮件的id时,我使用函数“uid”进行搜索,得到了真实的uid(例如,如果我有500封邮件并将其全部删除,那么下一封邮件将是50

我使用此代码从电子邮件中删除邮件:

mail.store(id, '+FLAGS', '\\Deleted')
mail.expunge()
这个代码返回“Ok”

(“好的,[无])

我还将gmail帐户中的设置更改为:


但我还是不能删除messeges。为什么?

我解决了我的问题,但得到了另一个问题,如果有人用另一个答案回答这个问题,我会很高兴:) 当我搜索要删除的邮件的id时,我使用函数“uid”进行搜索,得到了真实的uid(例如,如果我有500封邮件并将其全部删除,那么下一封邮件将是501,即使我的收件箱中只有一封邮件)。 因此,与其使用:

email.uids('search', 'ALL')
我用过:

email.search(None, 'ALL')
当我删除消息时,我需要使用非真实的id。因此,例如,501消息将在其“假id”中为1(或真实..以您希望的方式查看)。下一个消息将为2,以此类推

因此,我没有删除501 messege id,而是删除了1 messege id

但问题是:
为什么取回邮件(然后我必须使用“真实id”)和删除邮件(然后我必须使用“非真实id”)之间有区别呢?

我解决了我的问题,但得到了另一个问题,如果有人用另一个答案回答这个问题,我会很高兴:) 当我搜索要删除的邮件的id时,我使用函数“uid”进行搜索,得到了真实的uid(例如,如果我有500封邮件并将其全部删除,那么下一封邮件将是501,即使我的收件箱中只有一封邮件)。 因此,与其使用:

email.uids('search', 'ALL')
我用过:

email.search(None, 'ALL')
当我删除消息时,我需要使用非真实的id。因此,例如,501消息将在其“假id”中为1(或真实..以您希望的方式查看)。下一个消息将为2,以此类推

因此,我没有删除501 messege id,而是删除了1 messege id

但问题是:
为什么在获取消息(然后我必须使用“真实id”)和删除消息(然后我必须使用“非真实id”)之间有区别呢?

您混合了“消息序列号”(MSN,您称之为“假id”)和“唯一id”(UID,您称之为“真实id”)

在任何地方使用UID都更方便。MSN和UID版本中都有一些命令:FETCH vs UID FETCH、SEARCH vs UID SEARCH、STORE vs UID STORE。你必须始终如一,但它们在其他方面的作用是相同的

因此,如果使用UID搜索,则应使用UID存储:

email.uid('STORE', id, '+FLAGS', '(\\Deleted)')
email.expunge()
关于Gmail上的删除,特别是:尽管用户设置了删除,但我发现它总是删除“收件箱”标签(或您碰巧所在的任何文件夹),这会将其存档在您的All Mail文件夹或同等文件夹中。要真正删除它,您可能需要:

  • 将其移动到用户垃圾箱文件夹(使用
    (UID)move
    ,或使用
    (UID)COPY
    和deletation的组合
  • 然后将其从用户垃圾箱文件夹中删除。大多数用户会发现,将其留在垃圾箱中直到30天后自动删除为止是可以接受的

您混合了“消息序列号”(MSN,您称之为“假ID”)和“唯一ID”(UID,您称之为“真实ID”)

在任何地方使用UID都更方便。MSN和UID版本中都有一些命令:FETCH vs UID FETCH、SEARCH vs UID SEARCH、STORE vs UID STORE。您必须保持一致,否则它们的工作方式相同

因此,如果使用UID搜索,则应使用UID存储:

email.uid('STORE', id, '+FLAGS', '(\\Deleted)')
email.expunge()
关于Gmail上的删除,特别是:尽管用户设置了删除,但我发现它总是只删除“收件箱”标签(或您所在的任何文件夹),这将使其存档在您的“所有邮件”文件夹或同等文件夹中。要真正删除它,您可能需要:

  • 将其移动到用户垃圾箱文件夹(使用
    (UID)move
    ,或使用
    (UID)COPY
    和deletation的组合
  • 然后将其从用户垃圾箱文件夹中删除。大多数用户会发现,将其留在垃圾箱中直到30天后自动删除为止是可以接受的