[英]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
格式存储,但Find
和Restrict
方法要求将日期和时间转换为字符串表示形式。 要确保日期格式符合 Microsoft Outlook 的预期,请使用Format
function。例如,VBA 宏显示了如何使用Format
function:
sFilter = "[ReceivedTime] > '" & Format("5/02/22 3:30pm", "ddddd h:nn AMPM") & "'"
在应用过滤器之前对集合进行Sort
也很有意义。
在以下文章中阅读有关Find
/ FindNext
或Restrict
方法的更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.