问题描述
我正在使用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)
如果解决方案不成功,请考虑将错误跟踪更新为问题。