【问题标题】:How to filter gmail imap messages for date in python?如何在 python 中过滤 gmail imap 消息的日期?
【发布时间】:2015-04-20 06:58:01
【问题描述】:

我有以下代码通过 imap 登录到 gmail,选择收件箱,然后在邮箱中搜索来自 billing@gmail.com 的电子邮件

如何过滤来自 gmail 的数据,使其仅返回日期为今天的邮件?

m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(username, password)
m.select('inbox') 
resp, data = m.search(None, '(FROM "billing@gmail.com")')
return data

我正在使用以下模块:

https://docs.python.org/2/library/imaplib.html

【问题讨论】:

    标签: python gmail imap gmail-imap


    【解决方案1】:

    imaplib 只是 this RFC 中描述的 IMAP 协议的一个简单包装,您需要查看的具体部分是 SEARCH 命令。

    在回答您的问题时选择当前邮箱中到达的所有邮件,例如在 2015 年 2 月 19 日,您将执行查询 (ON 19-Feb-2015)

    一些python代码会以正确的方式格式化今天的日期以进行查询:

    import time
    resp, data = m.search(None, "(ON {0})".format( time.strftime("%d-%b-%Y") ) )
    

    now data 将包含今天收到的消息编号列表。

    【讨论】:

      【解决方案2】:

      您可以使用SENTSINCE 获取最新消息

      date = (datetime.date.today() - datetime.timedelta(days=2)).strftime("%d-%b-%Y")
      typ, messages = m.search(None, '(ALL)', f'(SENTSINCE {date})')
      

      仅获取今天可以使用的消息

      date = datetime.date.today().strftime("%d-%b-%Y")
      

      Une 也可以将 '(ALL)' 替换为 '(UNSEEN)' 以仅获取看不见的消息

      【讨论】:

        猜你喜欢
        • 2019-05-19
        • 1970-01-01
        • 1970-01-01
        • 2020-01-20
        • 2011-01-16
        • 2015-01-26
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        相关资源
        最近更新 更多