ПОИСК ДО/ПОСЛЕ с Pythons imaplib

У меня есть меньший IMAP- script, написанный я Python (3.2).

I моя строка поиска выглядит так:

typ, data = M.search(None, 'FROM', '"MyName"')

Я получаю ожидаемые результаты. Однако, если я изменю его на что-то вроде:

typ, data = M.search(None, 'AFTER', '"01-Jan-2010"')

(с датой кавычки или без нее, я получаю эту ошибку

Traceback (most recent call last):
  File "./priv/imap.py", line 100, in <module>
    main()
  File "./priv/imap.py", line 93, in main
    print(to_json(fetch_result(M, args), args))
  File "./priv/imap.py", line 51, in fetch_result
    typ, data = M.search(None, 'AFTER', '"01-Jan-2010"')
  File "/usr/lib/python3.2/imaplib.py", line 652, in search
    typ, dat = self._simple_command(name, *criteria)
  File "/usr/lib/python3.2/imaplib.py", line 1121, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "/usr/lib/python3.2/imaplib.py", line 957, 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']

Я не знаю, почему это было бы незаконным, но всякая помощь будет оценена! Кроме того, я настоятельно рекомендую использовать "YOUNGER 1234567", чтобы сделать более тонкую фильтрацию, но я не уверен, поддерживает ли gmail/python это еще.

заблаговременно

Ответ 1

Вы можете использовать поиск следующим образом:

Но, похоже, он не поддерживает подробное время, но только дату.

а дата - это внутренняя дата (без учета времени и часового пояса) электронной почты

M.search(None, '(SINCE "01-Jan-2012")')
M.search(None, '(BEFORE "01-Jan-2012")')
M.search(None, '(SINCE "01-Jan-2012" BEFORE "02-Jan-2012")')

Ответ 2

вы можете попробовать:

typ, data = M.search(None, '(SINCE "01-Jan-2010")')

или если вы используете UID:

typ, data = M.uid('search', '(SINCE 01-Jan-2010)')