我使用此代码从我的电子邮件中删除了一条消息:
mail.store(id, '+FLAGS', '\\Deleted')
mail.expunge()
此代码返回' Ok'。
(' OK',[无])
我还将我的Gmail帐号中的设置更改为:
但我仍然无法删除消息。为什么?
答案 0 :(得分:3)
您正在混合'消息序列号'(MSN,您称之为'假ids')和'唯一ID'(UID,您称之为'真实ID')。
在任何地方使用UID都比较方便。 MSN和UID版本中都有一些命令:FETCH与UID FETCH,SEARCH与UID SEARCH,STORE与UID STORE。你必须保持一致,但他们的工作方式相同。
因此,如果您使用UID SEARCH,则应使用UID STORE:
email.uid('STORE', id, '+FLAGS', '(\\Deleted)')
email.expunge()
关于Gmail上的删除,特别是:尽管用户设置了删除,但我发现它总是只删除“收件箱”标签(或您碰巧在的任何文件夹中),这会将其保存在“所有邮件”文件夹中或同等学历。要真的删除它,您可能需要:
(UID) MOVE
,或(UID) COPY
和删除的组合。答案 1 :(得分:0)
我解决了我的问题,但又得到了另一个问题,如果有人用另一个答案回答这个问题,我会很高兴问题出现了:) 当我搜索要删除的messege的id时,我搜索了函数'uid'并得到了真正的uid(例如,如果我有500个messeges并删除所有这些,那么下一个我得到的,将是501 ,即使我的收件箱中只有一个信息。) 所以不要使用:
email.uids('search', 'ALL')
我用过:
email.search(None, 'ALL')
当我删除messege时,我需要使用非真实的id。所以例如,501 messege将是1“假身份证”(或真实......看看你想看到它。),下一个将是2等等......
所以,我没有删除501 messege id,而是为1个messege id做了。
但是,问题出现了: 为什么在获取messeges之间存在差异(然后我将必须使用'real id')并删除它们(然后我必须使用'not real id'。)