Я использовал приведенный ниже фрагмент кода, чтобы захватить каждое письмо в определенной подпапке, полученное в течение последних 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 или, возможно, в форматировании времени, но, поскольку я новичок в программировании, я не смог найти root причина того, что делает функцию неправильно себя ведет.
Любая помощь очень ценится.
Спасибо