我一直在使用下面的代码片段来抓取在过去3小时内收到的某个子文件夹中的每封电子邮件,并在处理之前从中提取一些业务信息,并且它已经工作了一周左右。然而,由于某种原因,昨天我注意到它工作不正常,当我添加一个打印声明以查看向流程功能发送了哪些电子邮件时,我注意到它从3月到现在发送了所有邮件(超过1000封电子邮件)
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
api_folder = outlook.Folders.Item(1).Folders['Some Folder']
start = datetime.datetime.now() - datetime.timedelta(hours=3)
# 05/01/2020 05:23 AM is this the right format?
start = start.strftime('%m/%d/%Y %H:%M %p')
messages = api_folder.Items.Restrict("[ReceivedTime] >= '" + start + "'")
# This prints emails that shouldnt be here after Restrict()
for msg in messages:
print(f"{msg.Subject} - {msg.ReceivedTime}")
我敢肯定,在调用Restrict的方式上,或者在时间格式上,这可能是一个非常愚蠢的错误,但由于我是编程新手,我一直无法找到导致函数行为异常的根本原因
非常感谢您的帮助
谢谢
尽管日期和时间通常以
Date
格式存储,但是Find
和Restrict
方法要求将日期和时间转换为字符串表示形式。要确保日期的格式符合Microsoft Outlook的要求,请使用strftime
(或VBA中的Format
)函数。并确保Outlook理解它:注意,您可以在Outlook中手动配置所需的筛选器,以获取字符串表示形式并在代码中使用它
相关问题 更多 >
编程相关推荐