Pythonexchangelib如何获取今天的未读邮件列表?

Python exchangelib how to get today's unread mail list?

我正在尝试使用 Python exchanglib 库仅获取今天的未读邮件列表。 我的代码如下所示:

from exchangelib import Account,Credentials
import time

def connect_mail(username, pwd, addr):
    credentials = Credentials(username=username, password=pwd)
    account = Account(addr, credentials=credentials, autodiscover=True)
    return account

def get_unread_mail(account):
    res = account.inbox.filter(is_read=False)
    return res

a = connect_mail(username, pwd, addr)   
unread_mail_list = get_unread_mail(a)
current_date = time.strftime("%Y%m%d", time.localtime()) 
curr_mail_list = []
for mail in unread_mail_list :
    if str(mail.datetime_received)[:10].replace('-','') == current_date:
        curr_mail_list .append(mail)

此代码可能有效,但实际上此代码会 运行 很长时间,因为我的收件箱中有大量未读邮件。

然后我想用.filter()解决它。

代码是这样的:

from exchangelib import EWSDate, EWSDateTime

def today_mail(account):
    today = EWSDate.today()
    mails = account.inbox.all().filter(start__gte=today)
    return mails

或者:

def today_mail(account):
    start = account.default_timezone.localize(EWSDateTime(2020, 6, 29))
    end = account.default_timezone.localize(EWSDateTime(2020, 7, 1))
    mails = account.inbox.all().filter(start__range=(start,end))

但不幸的是,它不起作用。

谁能帮我解决这个问题? 谢谢!

消息没有 startend 字段。那是用于日历项目。

相反,过滤 https://ecederstrand.github.io/exchangelib/#message-timestamp-fields 中提到的 Message 时间戳字段之一,例如 datetime_received.