使用Pythons imaplib搜索前后

使用Pythons imaplib搜索前后,python,search,date,imap,Python,Search,Date,Imap,我用Python(3.2)编写了一个较小的IMAP脚本 我的搜索行如下所示: 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 1

我用Python(3.2)编写了一个较小的IMAP脚本

我的搜索行如下所示:

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']
回溯(最近一次呼叫最后一次):
文件“/priv/imap.py”,第100行,在
main()
文件“/priv/imap.py”,第93行,主
打印(到json(获取结果(M,args,args))
文件“/priv/imap.py”,第51行,在fetch_结果中
类型,数据=M.search(无,'之后','2010年1月1日')
文件“/usr/lib/python3.2/imaplib.py”,第652行,搜索中
典型,dat=self.\u简单\u命令(名称,*标准)
简单命令中的文件“/usr/lib/python3.2/imaplib.py”,第1121行
返回self.\u命令\u complete(名称,self.\u命令(名称,*args))
文件“/usr/lib/python3.2/imaplib.py”,第957行,在命令中完成
raise self.error(“%s命令错误:%s%s%”(名称、类型、数据))
imaplib.error:搜索命令错误:错误[b'无法分析命令']
我不知道为什么这会是非法的,但所有的帮助将不胜感激!而且,我最后想做的是使用“年轻的1234567”来做一些更精细的过滤,但我不确定gmail/python是否支持这一点

提前感谢

您可以尝试:

typ, data = M.search(None, '(SINCE "01-Jan-2010")')
或者,如果您正在使用UID:

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

您可以像这样使用搜索:

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

日期是电子邮件的内部日期(不考虑时间和时区)

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")')

是否也可以将时间与日期一起使用?@user250145否,这些命令是“忽略时间和时区”执行的:参数没有什么坏处,但我确实觉得它们没有必要,至少在gmail上是这样。有些情况下需要参数。有些情况下甚至很多情况下都需要参数,但从没有过,因为日期格式只使用a-z、0-9和-,而这些都不需要引用。