Установите HTML в режиме кэширования Outlook через Javascript и EWS - PullRequest
0 голосов
/ 21 февраля 2020

Моя рабочая среда Outlook меняется с режима онлайн (непрерывное подключение) на режим кэширования, и это нарушает компонент рабочего стола надстройки Outlook, предназначенной для сохранения, а затем пересылки черновиков электронных писем для внутренней проверки безопасности.

Мой исходный код будет сохранять черновик asyn c, затем использовать Id и изменить ключ, чтобы переслать его В кэшированном режиме Id отсутствует, пока учетная запись не синхронизируется с Exchange.

Теперь битый код (не работает в кэшированном режиме)

   //Save current item as draft
   mailForward.SaveDraftIfNecessary = function SaveDraftIfNecessary() {
       if (_item_id == null || _item_id == undefined) {
           Office.context.mailbox.item.saveAsync(function (asyncResult) {
               if (asyncResult.error) {
                   app.showNotification(_appName, "Error: " + asyncResult.error.message);
               }
               else {
                   _item_id = asyncResult.value;
               }
           });
       }
   };

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

Код для получения типа тела и текста выглядит следующим образом:

              item.body.getTypeAsync(
                  function (asyncResultGet) {
                      if (asyncResultGet.status === Office.AsyncResultStatus.Failed) {
                          statusUpdate("icon16", asyncResultGet.error.message);
                          stopSpinner();
                      }
                      else {
                          bodyType = asyncResultGet.value;
                          item.body.getAsync(bodyType,
                              function (asyncResultGet) {
                                  if (asyncResultGet.status === Office.AsyncResultStatus.Failed) {
                                      statusUpdate("icon16", asyncResultGet.error.message);
                                      stopSpinner();
                                  }
                                  else {
                                      bodyText = asyncResultGet.value;

SOAP, который я пытаюсь использовать для вставить основной текст. Я также пробовал t: NewBodyContent вместо t: Body:

      '               <t:Message>' +
      '                   <t:Subject>' + _subject + '</t:Subject>' +
      '                   <t:Body BodyType="'+ _bodyType +'">' + _bodyText + '</t:Body>' +
      '                   <t:ToRecipients>' + _adddressesSoap + '</t:ToRecipients>' +
      '               </t:Message>' +

1 Ответ

0 голосов
/ 21 февраля 2020

Моя проблема была в кодировке. У меня было подозрение, что может быть проблема, но я не проверял его, пока не нашел эту ссылку:

HTML - кодирование потеряно, когда атрибут прочитан из поля ввода

Я использовал следующий код:

        var htmlEncode = function htmlEncode(s) {
            var ntable = {
                "&": "amp",
                "<": "lt",
                ">": "gt",
                "\"": "quot"
            };
            s = s.replace(/[&<>"]/g, function (ch) {
                return "&" + ntable[ch] + ";";
            });
            s = s.replace(/[^ -\x7e]/g, function (ch) {
                return "&#" + ch.charCodeAt(0).toString() + ";";
            });
            return s;
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...