python - 使用 imaplib 在 gmail 中删除电子邮件时出现问题

标签 python gmail imap imaplib gmail-imap

我尝试从收件箱文件夹中删除邮件,一切正常,但是当我切换到“所有邮件”文件夹时,删除不起作用。 expunge() 方法返回 ('OK', [None]) 并且消息未被删除:

>>>import imaplib
>>>server = imaplib.IMAP4_SSL('imap.gmail.com','993')
>>>server.login('likvidator89@gmail.com','Password')
>>>server.select('inbox')
>>>for i in server.search(None,'all')[1][0].split():
...    print i+"\n"+server.fetch(i,'(BODY[HEADER.FIELDS (Subject)])')[1][0][1]
...
#  that how i know what UID hame my message? I select by subject
#....
#28
#Subject: 1 Question Has 1 Answer - Stack Overflow
#
#
#29
#Subject: 2222222222
#...
>>>server.store(29,'+FLAGS','\\Deleted')
#('OK', ['29 (FLAGS (\\Seen \\Deleted))'])
>>>server.expunge()
#('OK', ['29'])
>>> server.select('[Gmail]/All Mail')
('OK', ['47'])
>>> for i in server.search(None,'all')[1][0].split():
...  print i+"\n"+server.fetch(i,'(BODY[HEADER.FIELDS (Subject)])')[1][0][1]
... 
#....
#
#46
#Subject: 2222222222
#
#
#47
#Subject: 3333333333333333
#
#....
>>> server.store(47,'+FLAGS','\\Deleted')
('OK', ['47 (FLAGS (\\Seen \\Deleted))'])
>>> server.expunge()
('OK', [None])

最佳答案

它将给定 gmail 标签中的所有邮件移动到 gmail 垃圾桶

#!usr/bin/python
import email, imaplib

user = 'xxx'
pwd = 'xxx'

m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(user,pwd)

m.select("some_gmail_label")
m.store("1:*",'+X-GM-LABELS', '\\Trash')

m.expunge() # should be useless, but gmail server says it is ok

记得刷新你的gmail界面因为它有缓存

关于python - 使用 imaplib 在 gmail 中删除电子邮件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988583/

相关文章:

Python 3 : Finding string in a list, 返回字符串和 NONE

gmail imap 中的 javamail getNewMessageCount 始终返回 0

delphi - 使用 Indy 检查未读消息

c# - 如何按主题对电子邮件进行分组?

python - 从错误消息中获取禁用 pylint 的错误代码

python - 从列中过滤掉非数字值

python - 比较两个 pandas 系列的 float 接近相等?

javascript - 如果电子邮件在 Gmail 的主题或正文中包含特定字词,则使用脚本对其进行标记

python - 复制后如何唯一标识 IMAP 邮件?

php - IMAP 和 PHP - 从已发送和收件箱文件夹中获取所有电子邮件