我有以下代码通过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
我使用以下模块:
答案 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)'
以仅获取未看到的消息