【发布时间】:2014-03-13 22:14:14
【问题描述】:
我正在尝试通过 python imaplib 搜索“10 分钟前”的电子邮件 我可以搜索带有任何字符串的电子邮件,但不能搜索日期。
result, data = mail.uid('search', None, '(HEADER Subject "SEARCH_TERM")')
如何按分钟进行搜索?
【问题讨论】:
我正在尝试通过 python imaplib 搜索“10 分钟前”的电子邮件 我可以搜索带有任何字符串的电子邮件,但不能搜索日期。
result, data = mail.uid('search', None, '(HEADER Subject "SEARCH_TERM")')
如何按分钟进行搜索?
【问题讨论】:
SEARCH 命令(SENTSINCE、SINCE、SENTBEFORE、SENTON、BEFORE)仅适用于日期,而不是日期 + 时间戳。这意味着搜索条件仅限于 DD-MMM-YYYY。您不能包含小时、分钟或秒,只能包含日期。
是:a1 搜索自“2014 年 3 月 1 日”
NO: a1 search since "01-mar-2014 00:00:00"
自“2014 年 3 月 1 日”以来的 1 次搜索
自“2014 年 3 月 1 日 00:00:00”以来的 1 次搜索
IMAP 命令 SEARCH 中出现 1 个 BAD 错误:搜索日期参数无效
您必须查看搜索返回消息编号的每条消息,并在代码中应用时间戳过滤。例如:
1 获取 498:500 内部日期
498 FETCH(内部日期“04-Mar-2014 13:07:29 -0600”)
499 FETCH(内部日期“05-Mar-2014 07:16:43 -0600”)
500 FETCH(内部日期“05-Mar-2014 07:44:36 -0600”)
如果您更喜欢使用该日期,也可以获取 498:500 (body.peek[header.fields (Date)])。
-瑞克
【讨论】:
基本 IMAP 不允许这样做。有一个扩展,WITHIN,可以做到这一点,但它的实现并不完善。看看你的服务器是否支持 WITHIN。如果没有,您只需搜索今天的邮件,检索日期字段或 INTERNALDATE,然后自己进行微调。
【讨论】: