问题描述
如果在过去24小时内未找到电子邮件,如何发出警报/例外?
这是打印的输出(如果找到电子邮件)。它会打印电子邮件地址,主题和计数。一行
defaultdict(
,{('info@something.com','备份状态报告(错误):Tesla(D)(星期一,14/09/2020)'):1})
如果未找到任何内容,这是打印输出。
defaultdict(
,{})
from exchangelib import Credentials,Account,UTC_NOW
from collections import defaultdict
from datetime import timedelta
credentials = Credentials('something@something.dk','private')
a = Account('something@something.dk',credentials=credentials,autodiscover=True)
counts = defaultdict(int)
testfolder = a.inbox.parent / 'Test'
since = UTC_NOW() - timedelta(hours=24)
for item in testfolder.all()\
.only('sender','subject')\
.filter(datetime_received__gt=since)\
.order_by('-datetime_received'):
if item.sender.email_address == 'info@something.com':
counts[item.sender.email_address,item.subject] += 1
if not testfolder.filter(datetime_received__gt=since,sender='info@something.com').exists():
print('no email found')
print(counts)
以上代码已编辑为以下答案,但仍会打印空字典
解决方法
应该对发送方进行过滤,尽管我现在无法在我的测试帐户上对其进行过滤。这是我进行有效查询的方式,它只为您提供所需的信息:
from datetime import timedelta
from exchangelib import Credentials,Account,UTC_NOW
credentials = Credentials('something@something.dk','private')
a = Account('something@something.dk',credentials=credentials,autodiscover=True)
since = UTC_NOW() - timedelta(hours=24)
testfolder = a.inbox.parent / 'Test'
if not testfolder.filter(
datetime_received__gt=since,sender='info@something.com',).exists():
print('No email found!')