IMAP удалить электронную почту из отправленной папки - PullRequest
0 голосов
/ 18 марта 2020

Не могу удалить почту из папки Sent. Из папки Inbox хорошо удаляет. Я пытался с Sent и [Gmail]/Sent параметрами, но это не работает. Где это может быть проблема?

import imaplib

email = "my@gmail.com"
passw = "mypass"
imapserver = "imap.gmail.com"


def deleteEmailIMAP(user, password, IMAP):
    mail = imaplib.IMAP4_SSL(IMAP)
    mail.login(user, password)
    mail.select("[Gmail]/Sent")
    typ, data = mail.search(None, 'subject 2f0802e2-e396-4a37-aeae-3a51b6ad288f')
    for num in data[0].split():
        mail.store(num, '+FLAGS', r'(\Deleted)')
    mail.expunge()
    mail.close()
    mail.logout()


deleteEmailIMAP(email, passw, imapserver)

журналы:

Traceback (most recent call last):
  File "/Users/nikolai/Documents/Python/gmail/test/cv.py", line 23, in <module>
    deleteEmailIMAP(email, passw, imapserver)
  File "/Users/nikolai/Documents/Python/gmail/test/cv.py", line 15, in deleteEmailIMAP
    typ, data = mail.search(None, 'subject 2f0802e2-e396-4a37-aeae-3a51b6ad288f')
  File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/imaplib.py", line 723, in search
    typ, dat = self._simple_command(name, *criteria)
  File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/imaplib.py", line 1196, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/imaplib.py", line 944, in _command
    ', '.join(Commands[name])))
imaplib.error: command SEARCH illegal in state AUTH, only allowed in states SELECTED

1 Ответ

0 голосов
/ 21 марта 2020

Код не обрабатывает ошибки. Вот почему он не перехватывает помеченный NO ответ сервера на команду SELECT. Он также не отображается в журнале ошибок, но исключение, о котором вы сообщили, означает, что к моменту выдачи кода SEARCH почтовый ящик не открывается - а это значит, что SELECT должен был произойти сбой. (Проверьте Состояния протокола IMAP .)

GMail использует локализованные имена почтовых ящиков, поэтому вероятным виновником является то, что пользователь, которого вы аутентифицируете, не имеет почтового ящика с именем [Gmail]/Sent. Если вам нужно узнать имя почтового ящика «отправленной папки», попробуйте RF C 6154 (или см. Документы Google ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...