【问题标题】:How to get all emails from a time stamp in mail.uid python如何从mail.uid python中的时间戳获取所有电子邮件
【发布时间】:2015-11-30 19:25:07
【问题描述】:

我知道如何获取特定日期以来的所有邮件:

import datetime
date = (datetime.date.today() - datetime.timedelta(1)).strftime("%d-%b-%Y")
result, data = mail.uid('search', None, '(SENTSINCE {date})'.format(date=date))

我无法收到来自特定时间戳的邮件。我的尝试是:

import datetime
date = (datetime.datetime.now() - datetime.timedelta(hours=24)).strftime("%d-%b-%Y %H:%M:%S")
result, data = mail.uid('search', None, '(SENTSINCE {date})'.format(date=date))

但我收到以下错误:

error: UID command error: BAD ['Could not parse command']

【问题讨论】:

    标签: python email imap imaplib


    【解决方案1】:

    IMAP 搜索语法不支持时间。只有日期。这是协议限制。有关搜索语法,请参阅 RFC 3501。

    【讨论】:

    • 总有黑客攻击... UID SEARCH DATE 15-jun-2015 HEADER "Date" ":24:48" 搜索 2015-06-15 x:24:48 发送的邮件任何 x。至少它不应该有很多误报。 :24:48 由于冒号,只能是分和秒。由于时区问题,该 hack 在小时字段上不起作用(是的,我知道,印度和尼泊尔的时区也打破了这个 hack,呸)。
    • 此外,这是使用来自两个不同来源的日期和时间,这将导致问题,这仅允许精确匹配,而不是因为(大于)匹配..
    猜你喜欢
    • 2016-04-16
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多