python exchangelib如何在特定日期范围内收到电子邮件?

时间:2018-02-12 08:39:13

标签: python exchangelib

我尝试使用exchangelib提取组邮箱进行分析,我想在日期范围内提取。
试图使用过滤功能,但似乎只适用于日历,我可以建议您是否有任何电子邮件样本? 谢谢大家。

2 个答案:

答案 0 :(得分:3)

您需要过滤消息项上可用的日期时间字段。 Message.FIELDS包含Message类的所有可用字段。您可以使用以下内容列出所有日期时间字段:

>>> [f.name for f in Message.FIELDS if f.value_cls == EWSDateTime]
['datetime_received', 'datetime_sent', 'datetime_created', 'reminder_due_by', 'last_modified_time']

README使用.filter(start__range(x, y))显示示例,但start字段仅适用于CalendarItem个对象。相反,使用例如datetime_received来过滤Message个对象:

tz = EWSTimeZone.localzone()
emails_from_2017 = account.inbox.filter(datetime_received__range=(
    tz.localize(EWSDateTime(2017, 1, 1)),
    tz.localize(EWSDateTime(2018, 1, 1))
))

答案 1 :(得分:2)

pytz_tz = pytz.timezone('Europe/Copenhagen')
py_dt = pytz_tz.localize(datetime(year,month,day))
ews_bfr = EWSDateTime.from_datetime(py_dt)

for item in account.inbox.all().order_by('-datetime_received')[:10000]:
    if item.datetime_received < ews_bfr:
        item.delete() #delete all filtered emails
        print("Mail deleted Successfully")