DocumentItem (IMessage) теряет вложение после открытия
В нашем провайдере хранилища сообщений MAPI мы представляем как электронные письма, так и предметы, не относящиеся к внешнему виду (офисные документы и т. Д.). Технически, мы предоставляем эти документы как объект IMessage с одним приложением и определенным PR_MESSAGE_CLASS
(например, IPM.Document.txtfile). Outlook затем считает этот объект DocumentItem
не MailItem
,
Как вы можете видеть на скриншоте ниже, это работает отлично. Previewer работает как положено, двойной щелчок по элементу откроет элемент в соответствующем приложении (например, в блокноте).
Однако после открытия элемента после закрытия внешнего приложения что-то идет не так. Предварительный просмотр прерывается, и элемент не может быть открыт снова, пока другой элемент не будет выбран первым.
Согласно Outlook Spy, наш IMessage
Объект все еще в порядке. Это ООМ DocumentItem
обертка, которая теперь почему-то не хватает своего вложения:
Что может быть причиной такого поведения? Есть ли обновление, которого нам не хватает? Представляет ли элемент Outlook старый объект IMessage, который был поврежден? Мы уже потратили немало исследований на эту тему, все указатели приветствуются!
[РЕДАКТИРОВАТЬ 1]
Вот мужик шпион заявив IMessage
Объект все еще в порядке:
[РЕДАКТИРОВАТЬ 2]
Пока внешнее приложение не закрывается, все в порядке. Я могу открыть документ столько раз, сколько захочу, но как только я закрою один экземпляр внешнего средства просмотра, элемент Outlook будет "поврежден".
1 ответ
Ответ оказался очень простым,
Свойство PR_MESSAGE_FLAGS должно включать MSGFLAG_HASATTACH
Добавление этого флага немедленно решает проблему и имеет смысл. Просто результат работы Outlook (работа при первом доступе, а затем при взломе) отбросила нас.