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))
但不幸的是,它不起作用。
谁能帮我解决这个问题?
谢谢!
消息没有 start
和 end
字段。那是用于日历项目。
相反,过滤 https://ecederstrand.github.io/exchangelib/#message-timestamp-fields 中提到的 Message
时间戳字段之一,例如 datetime_received
.
我正在尝试使用 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))
但不幸的是,它不起作用。
谁能帮我解决这个问题? 谢谢!
消息没有 start
和 end
字段。那是用于日历项目。
相反,过滤 https://ecederstrand.github.io/exchangelib/#message-timestamp-fields 中提到的 Message
时间戳字段之一,例如 datetime_received
.