DocumentItem (IMessage) теряет вложение после открытия

В нашем провайдере хранилища сообщений MAPI мы представляем как электронные письма, так и предметы, не относящиеся к внешнему виду (офисные документы и т. Д.). Технически, мы предоставляем эти документы как объект IMessage с одним приложением и определенным PR_MESSAGE_CLASS (например, IPM.Document.txtfile). Outlook затем считает этот объект DocumentItemне MailItem,

Как вы можете видеть на скриншоте ниже, это работает отлично. Previewer работает как положено, двойной щелчок по элементу откроет элемент в соответствующем приложении (например, в блокноте).

Перед открытием - превью работает нормально

Однако после открытия элемента после закрытия внешнего приложения что-то идет не так. Предварительный просмотр прерывается, и элемент не может быть открыт снова, пока другой элемент не будет выбран первым.

После открытия - предварительный просмотр разрывов, открытие разрывов

Согласно Outlook Spy, наш IMessage Объект все еще в порядке. Это ООМ DocumentItem обертка, которая теперь почему-то не хватает своего вложения:

DocumentItem Отсутствует вложение

Что может быть причиной такого поведения? Есть ли обновление, которого нам не хватает? Представляет ли элемент Outlook старый объект IMessage, который был поврежден? Мы уже потратили немало исследований на эту тему, все указатели приветствуются!

[РЕДАКТИРОВАТЬ 1]

Вот мужик шпион заявив IMessage Объект все еще в порядке:

Сообщение все еще в порядке

[РЕДАКТИРОВАТЬ 2]

Пока внешнее приложение не закрывается, все в порядке. Я могу открыть документ столько раз, сколько захочу, но как только я закрою один экземпляр внешнего средства просмотра, элемент Outlook будет "поврежден".

1 ответ

Решение

Ответ оказался очень простым,

Свойство PR_MESSAGE_FLAGS должно включать MSGFLAG_HASATTACH

Добавление этого флага немедленно решает проблему и имеет смысл. Просто результат работы Outlook (работа при первом доступе, а затем при взломе) отбросила нас.

Другие вопросы по тегам