我正在尝试搜索" 10分钟以上"通过python imaplib发送电子邮件 我可以搜索任何字符串的电子邮件,但不能搜索日期。
result, data = mail.uid('search', None, '(HEADER Subject "SEARCH_TERM")')
我怎样才能在几分钟内进行搜索?
答案 0 :(得分:6)
SEARCH命令(SENTSINCE,SINCE,SENTBEFORE,SENTON,BEFORE)仅适用于日期,而不是日期+时间戳。这意味着搜索条件仅限于DD-MMM-YYYY。您不能包括小时,分钟或秒,只包括日期。
是:a1搜索" 01-mar-2014"
否:a1搜索自" 01-mar-2014 00:00:00"
自2014年3月1日起" 2014年3月1日以及#34;
自搜索以来" 01-mar-2014 00:00:00"
IMAP命令中的BAD错误SEARCH:无效的搜索日期参数
您必须查看搜索返回消息编号的每条消息,并在代码中应用时间戳过滤。例如:
1 fetch 498:500 internaldate
498 FETCH(INTERNALDATE" 04-Mar-2014 13:07:29 -0600")
499 FETCH(INTERNALDATE" 05-Mar-2014 07:16:43 -0600")
500 FETCH(INTERNALDATE" 05-Mar-2014 07:44:36 -0600")
如果您更喜欢使用该日期,请获取498:500(body.peek [header.fields(Date)])。
-Rick
答案 1 :(得分:0)
基础IMAP不允许这样做。有一个扩展程序WITHIN来执行此操作,但它实际上已经实现了。查看您的服务器是否支持WITHIN。如果不是,您只需要搜索今天的邮件,检索日期字段或INTERNALDATE,然后自己进行微调。