如何在python中过滤gmail imap消息的日期?

时间:2015-02-19 02:36:42

标签: python gmail imap gmail-imap

我有以下代码通过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

2 个答案:

答案 0 :(得分:0)

imaplib只是this RFC中描述的IMAP协议的简单包装器,您希望查看的具体部分是SEARCH命令。<​​/ p>

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

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

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

现在数据将包含今天收到的消息编号列表。

答案 1 :(得分:0)

您可以使用 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)' 以仅获取未看到的消息