Я могу получить доступ к своим электронным письмам, хранящимся в GMail, через imaplib следующим образом:
import imaplib
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login(username, password)
mail.select(mailbox='INBOX', readonly=True)
_, data = mail.search(None, '(ALL)')
Однако data
содержит только 1790 последних писем. Когда я повторяю номера почты, data
равно None
для идентификаторов выше 1790:
for i in itertools.count(start=1):
_, data = mail.fetch(str(i), "RFC822")
Как получить доступ ко всем моим электронным письмам в GMail через Python?
В веб-интерфейсе GMail я могу искать запросы диапазона следующим образом:
"in:anywhere after:2014-01-01 before:2014-01-02"
Но Python не может парсить такие запросы:
_, data = mail.search(None, '(ALL "in:anywhere")')
File "/usr/local/lib/python3.4/imaplib.py", line 660, in search
typ, dat = self._simple_command(name, *criteria)
File "/usr/local/lib/python3.4/imaplib.py", line 1134, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "/usr/local/lib/python3.4/imaplib.py", line 965, in _command_complete
raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: SEARCH command error: BAD [b'Could not parse command']
Теоретически диапазонные запросы должны работать примерно так, согласно документации по расширениям IMAP для Gmail< /а>. Однако когда я ищу диапазон дат, как в RFC 3501 , я получаю сообщения, которые были отправлены в течение этого периода времени:
_, data = mail.search(None, '(SINCE "01-Jan-2011" BEFORE "01-Jan-2012")')