Я пытаюсь удалить сообщение из папки «Входящие» и все в порядке, но когда я переключился на папку «Все письма», удаление не работает. expunge()
метод возвращает ('OK', [None])
и сообщение не было удалено:Проблема с удалением сообщений электронной почты в gmail с помощью imaplib
>>>import imaplib
>>>server = imaplib.IMAP4_SSL('imap.gmail.com','993')
>>>server.login('[email protected]','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])
Я попытался ваш подход, но когда я удалю сообщение, сообщение будет иметь метку INBOX, а если мы удалим из самой gmail, сообщение не будет иметь никакой метки. –
Я знаю, что это действительно старая тема, но чтобы помочь кому-либо еще с проблемой Рахула выше, вам просто нужно сначала удалить ярлык «Входящие», прежде чем добавить метку корзины. то есть 'imap.store (num, '-X-GM-LABELS', '\\ Inbox')' – Shogan