Программное предварительное заполнение формы Outlook на сервере перед ее загрузкой пользователем

У меня есть существующая форма Outlook, в которой уже есть предопределенная логика, именованные поля и поля со списком. Эта форма является стандартным вводом для другой квартиры, поэтому мне не разрешено изменять форму таким образом, чтобы нарушить их обработку.

Что мне нужно сделать, так это предварительно заполнить некоторые поля формы динамически на стороне моего сервера, где у меня есть доступная информация, и предоставить ее в виде файла .msg конечному пользователю. Затем пользователь мог изменить некоторые поля, как те, которые я предварительно заполнил, так и другие.

Мой вопрос: существуют ли какие-либо API или приемы «найти и заменить», которые я мог бы использовать для предварительного заполнения свойств формы Outlook программным путем на моем сервере? Если это поможет, значения.

Я пробовал наивный подход, помещая $NAME$ в значение свойства, а затем выполняя простую замену текста, но после этого Outlook не смог открыть .msg - я предполагаю, что во внутренних структурах данных есть некоторые контрольные суммы или зависимости.

Предпочтительными платформами являются .NET или Java, но подойдут и другие варианты.


person Tomas Grosup    schedule 18.10.2017    source источник


Ответы (1)


Объектный модуль Outlook может открывать файл MSG с помощью Namespace.OpenSharedItem, но OOM нельзя использовать из службы (например, IIS).
Вы можете открывать и изменять файл MSG с помощью расширенного MAPI (только C++ или Delphi) с помощью OpenIMsgOnIStg и т. д.
В случае .Net или Java, вы можете использовать Redemption и его RDOSession.GetMessageFromMsgFile метод (возвращает RDOMail). Вы можете изменить свойства с помощью RDOMail.Fields[], а затем сохранить файл MSG, вызвав RDOMail.Save.
Вы можете просмотреть существующие свойства MAPI и их имена DASL в OutlookSpy (нажмите кнопку OpenIMsgOnIStg).

person Dmitry Streblechenko    schedule 18.10.2017
comment
Спасибо, объектная модель Outlook работает. Я читал, что автоматизация Outlook на сервере официально не поддерживается, но есть ли что-то, что этому мешает? Он выглядит лучше других вариантов и работает из коробки без дополнительных покупок. - person Tomas Grosup; 24.10.2017
comment
Сервер в порядке, это сервис, который является проблемой. Outlook аварийно завершает работу или зависает. Вопрос не в том, если, а когда. - person Dmitry Streblechenko; 24.10.2017
comment
Будет ли иметь значение, если сервер запускает инструмент cmd как новый процесс, а фактическое взаимодействие с офисом выполняется с помощью этого инструмента? Я проверил это, и это работает так же, и я могу обслуживать файл в течение секунды или около того. То, что я не могу проверить самостоятельно, - это сценарии сбоя, поэтому я спрашиваю... - person Tomas Grosup; 25.10.2017
comment
Нет. Проблема в том, что Outlook может и будет отображать окна сообщений и пытаться взаимодействовать с пользователем другими способами. Не будет живого пользователя, чтобы принять или отклонить подсказки. Опять же, никакое приложение Office (включая Outlook) нельзя использовать из службы. Microsoft очень четко говорит об этом. - person Dmitry Streblechenko; 25.10.2017