使用Python的imaplib进行前后搜索
我写了一个小的IMAP脚本,用Python(3.2)编写。
我的搜索语句看起来是这样的:
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是否支持这个功能。
提前谢谢大家!
2 个回答
7
你可以试试:
typ, data = M.search(None, '(SINCE "01-Jan-2010")')
或者如果你在使用UID的话:
typ, data = M.uid('search', '(SINCE 01-Jan-2010)')
22
你可以使用这样的搜索方式:
不过似乎它不支持具体的时间,只能按日期来搜索。
而这个日期是邮件的内部日期(不考虑时间和时区)。
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")')