如何在 imaplib SINCE 和 BEFORE 中使用变量
How to use variables with imaplib SINCE and BEFORE
我正在使用 imaplib 获取邮箱在特定日期收到的电子邮件数量,效果很好,但我想更进一步,使用变量 select 日期范围(使用 SINCE 和BEFORE) 并循环打印从选定的开始日期到今天收到的每日电子邮件数。
但是,当我用今天的日期变量替换之前的日期时,我已经收到一条错误消息:
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
值用于 select SINCE & BEFORE 的日期范围。由于 obj.search()
的第二个参数在传入之前仅接受字符串值 format the string。
例如
你可以像这样设置一个格式化的变量并在其中传递变量值
rangeVals = (SINCE "{}" BEFORE "{}").format("<Start-Date>,<End-Date>")
然后将变量作为参数传递,像这样
gmail_count = obj.search(None, rangeVals)
如果解决方案不成功,请考虑更新问题的错误跟踪。
我正在使用 imaplib 获取邮箱在特定日期收到的电子邮件数量,效果很好,但我想更进一步,使用变量 select 日期范围(使用 SINCE 和BEFORE) 并循环打印从选定的开始日期到今天收到的每日电子邮件数。
但是,当我用今天的日期变量替换之前的日期时,我已经收到一条错误消息:
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
值用于 select SINCE & BEFORE 的日期范围。由于 obj.search()
的第二个参数在传入之前仅接受字符串值 format the string。
例如
你可以像这样设置一个格式化的变量并在其中传递变量值
rangeVals = (SINCE "{}" BEFORE "{}").format("<Start-Date>,<End-Date>")
然后将变量作为参数传递,像这样
gmail_count = obj.search(None, rangeVals)
如果解决方案不成功,请考虑更新问题的错误跟踪。