繁体   English   中英

Win32com outlook 按日期筛选停止工作

[英]Win32com outlook filter by date stopped working

我有一个脚本,它显示了某个日期范围内的电子邮件。 它一直工作到 4 月 29 日,现在,它无法正确过滤...

import win32com.client

import os 
from datetime import datetime, timedelta

outlook = win32com.client.Dispatch('outlook.application')
mapi = outlook.GetNamespace('MAPI')

messages = mapi.Folders("myemail@gmail.com").Folders("Inbox").Items

today = datetime.today()

start_time = today.replace(month=4,day=20, hour=0, minute=0, second=0).strftime('%Y-%m-%d %H:%M %p')
end_time = today.replace(month=5,day=2,hour=20, minute=0, second=0).strftime('%Y-%m-%d %H:%M %p')

messages = messages.Restrict("[ReceivedTime] >= '" + start_time
+ "' And [ReceivedTime] <= '" + end_time + "'")


messages.Sort("[ReceivedTime]", Descending=True)

for message in list(messages)[:5]:
    print(message.Subject, message.ReceivedTime, message.SenderEmailAddress)

我使用https://www.codeforests.com/2021/05/16/python-reading-email-from-outlook-2/作为教程。

任何想法为什么它没有按预期工作? 脚本现在根本不显示任何消息。

确保日期格式正确。 尽管日期和时间通常以Date格式存储,但FindRestrict方法要求将日期和时间转换为字符串表示形式。 要确保日期格式符合 Microsoft Outlook 的预期,请使用Format function。例如,VBA 宏显示了如何使用Format function:

sFilter = "[ReceivedTime] > '" & Format("5/02/22 3:30pm", "ddddd h:nn AMPM") & "'"

在应用过滤器之前对集合进行Sort也很有意义。

在以下文章中阅读有关Find / FindNextRestrict方法的更多信息:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM