使用Pythons imaplib搜索之前/之后

Mar*_*sen 13 python search imap date

我有一个较小的IMAP脚本编写我的Python(3.2).

我的搜索线看起来像这样:

typ, data = M.search(None, 'FROM', '"MyName"')
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果.但是,如果我将其更改为:

typ, data = M.search(None, 'AFTER', '"01-Jan-2010"')
Run Code Online (Sandbox Code Playgroud)

(有或没有引用日期,我收到此错误

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']
Run Code Online (Sandbox Code Playgroud)

我不知道为什么那是非法的,但所有的帮助将不胜感激!另外,我最终想要做的是使用"YOUNGER 1234567"来进行更精细的过滤,但我不确定gmail/python是否支持这个.

提前致谢

Gre*_* Su 17

您可以使用以下搜索:

但似乎它不支持详细时间,但只支持日期.

日期是电子邮件的内部日期(忽略时间和时区)

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")')
Run Code Online (Sandbox Code Playgroud)


Ava*_*esh 5

你可以试试:

typ, data = M.search(None, '(SINCE "01-Jan-2010")')
Run Code Online (Sandbox Code Playgroud)

或者如果您使用的是UID:

typ, data = M.uid('search', '(SINCE 01-Jan-2010)')
Run Code Online (Sandbox Code Playgroud)