【问题标题】:How to use variables with imaplib SINCE and BEFORE [duplicate]如何在 imaplib SINCE 和 BEFORE 中使用变量 [重复]
【发布时间】:2020-12-22 18:28:44
【问题描述】:

我正在使用 imaplib 获取特定日期在邮箱中收到的电子邮件数量,效果很好,但我想更进一步,使用变量选择日期范围(使用 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']

有没有办法避免这种情况?

【问题讨论】:

  • 问题解决了吗?

标签: python gmail imaplib


【解决方案1】:

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

例如

你可以像这样设置一个格式化的变量,并在那里传递变量值

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

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

gmail_count = obj.search(None, rangeVals) 

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

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 2018-10-06
    • 1970-01-01
    • 2012-06-20
    • 2021-12-19
    • 2011-06-09
    • 2019-08-04
    • 2014-05-07
    相关资源
    最近更新 更多