com_error при попытке отфильтровать входящие сообщения Outlook в список python - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать отфильтрованный список входящих сообщений, срок действия которых истекает через 10 дней. См. Код ниже:

outlook = Dispatch('Outlook.Application').GetNamespace('MAPI')
folder = outlook.Folders[0].Folders[inbox_label]

all_inbox = folder.Items.restrict("[RetentionExpirationDate] < '"+(datetime.datetime.today()+datetime.timedelta(days=10)).strftime('%Y-%m-%d')+" 05:00 AM'")

Это вызывает ошибку:

com_error: (-2147352567, 'Произошло исключение.', (4096, 'Microsoft Outlook', 'Условие недопустимо. ', None, 0, -2147352567), None)

Я в недоумении, потому что у меня очень похожая строка кода создает отфильтрованный список входящих сообщений за последние 5 дней, который работает правильно. Единственная разница заключается в использовании [RecvedTime] вместо [RetentionExpirationDate]. См. Рабочий код ниже:

all_inbox = folder.Items.restrict("[ReceivedTime] > '"+(datetime.datetime.today()-datetime.timedelta(days=5)).strftime('%Y-%m-%d')+" 05:00 AM'")

Я проверил формат времени, он выглядит так же. Я пробовал с частью ЧЧ: ММ и без нее. Я в тупике.

1 Ответ

1 голос
/ 12 июля 2020

RetentionExpirationDate НЕ является встроенным свойством Outlook (в отличие от ReceivedTime). Ссылка на свойство по имени (RetentionExpirationDate) будет работать, только если это свойство пользователя, добавленное в поля папки (параметр AddToFolderFields при вызове MailItem.UserProperties.Add ).

В противном случае вам придется указать имя свойства в универсальном формате DASL.
Предполагая, что это свойство добавлено путем вызова UserrProperties.Add (и, следовательно, GUID равен PS_PUBLIC_STRINGS), запрос будет

("@SQL=""http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/RetentionExpirationDate/0x00000040"" < '2020-01-01' "

Если это какое-то другое свойство, найдите его имя свойства DASL в OutlookSpy : выберите сообщение с этим набором свойств, нажмите кнопку IMessage, выберите свойство, посмотрите на поле редактирования DASL.

...