如何在imaplib SINCE和BEFORE之前使用变量

问题描述

我正在使用imaplib来获取特定日期在邮箱中收到的电子邮件数量,该方法很好用,但我想进一步介绍一下,并使用变量来选择日期范围(使用SINCE和BEFORE)并打印该数字从选定的开始日期到今天的aa循环中每天收到的电子邮件数量。

但是,当用今天的日期变量替换之前的日期时,我已经收到一条错误消息:

from datetime import date,timedelta

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


obj = imaplib.IMAP4_SSL('imap.gmail.com',993)  
obj.login('xxx@gmail.com','password')  
obj.select('Inbox')     
('OK',['50'])  
gmail_count = obj.search(None,'(SINCE "28-Aug-2020" BEFORE "tdate")') 
values = gmail_count[1][0]
replaced = values.decode("utf-8").replace(" ",",")
replaced.count(",") + 1

error: SEARCH command error: BAD [b'Could not parse command']

有办法避免这种情况吗?

解决方法

如果我对它的理解正确,则您尝试使用variable值来选择自此之前的日期范围。由于obj.search()的第二个参数在传入之前format the string才接受字符串值。

例如

您可以像这样设置格式变量,然后在其中传递变量值

rangeVals = (SINCE "{}" BEFORE "{}").format("<Start-Date>,<End-Date>")

然后像这样将变量作为参数传递

gmail_count = obj.search(None,rangeVals) 

如果解决方案不成功,请考虑将错误跟踪更新为问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...