Office.context.mailbox.item.body не определен

Я разрабатываю надстройку Office для Outlook, я структурирую следующее, пожалуйста, помогите.

Office.context.mailbox.item.body.getAsync() метод отлично работает в Office 365, но когда дело доходит до локального сервера Exchange 2013, он работает в клиенте Outlook, но не работает в веб-приложении Outlook. Минимальная версия набора требований к почтовому ящику - 1.3

проблема


person Kranthi Kumar    schedule 06.07.2017    source источник


Ответы (2)


Это ожидаемо. Office.context.mailbox.item.body.getAsync минимальные требования к почтовому ящику соответствуют API уровня 1.3. В то же время согласно "Общие сведения о наборах требований API Outlook "Outlook Web App (Exchange 2013 On-Premise) поддерживает только API уровня 1.1.

person Slava Ivanov    schedule 06.07.2017
comment
В OWA Exchange 2013 On-Premise Office.context.mailbox.item.body недоступен? В спецификации указано, что он доступен в Mailbox 1.1. - person Abhishek S Jain; 14.02.2018
comment
Объект @AbhishekSJain Office.context.mailbox.item.body доступен на уровне 1.1, но методы этого объекта, разработанные в разное время, для необходимого уровня для getAsync - 1.3. Например, prependAsync доступно из API уровня 1.1. См. Ссылку на документацию. - person Slava Ivanov; 14.02.2018
comment
когда я пытаюсь использовать Office.context.mailbox.item.body в версии 1.1, я получаю undefined, я пытался проверить, поддерживается ли getAsync или нет, с помощью if (Office.context.mailbox.item.body.getAsync !== undefined), помимо использования isSetSupported, есть ли другой способ сделать это? - person Abhishek S Jain; 14.02.2018
comment
@AbhishekSJain Вам не нужно проверять, доступна функция или нет; ваш манифест определяет уровень API, который вы запрашиваете. То, что вы задаете, - это отдельный вопрос, который вы должны задать сообществу как свой собственный вопрос. В этом вопросе вам нужно предоставить гораздо больше информации, например, версию клиента, который вы используете, какая у вас среда Exchange; где вы вызываете эту функцию и т. д. Извините, это не просто комментарии к другому вопросу. - person Slava Ivanov; 14.02.2018

Вы можете получить текст сообщения электронной почты в Office Mailbox API версии 1.1 и выше, вызвав метод Office.context.mailbox.getCallbackTokenAsync и выполнив ajax-вызов сервера EWS. Пример, предоставляемый Microsoft, находится по этой ссылке:

https://docs.microsoft.com/en-us/javascript/api/outlook/office.mailbox?view=outlook-js-1.1#getcallbacktokenasync-callback--usercontext-

Мой рабочий пример:

Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, (result) => {
    var ewsId = Office.context.mailbox.item.itemId;
    var token = result.value;

    // var restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0); this does not work on API version 1.1
    var restId = ewsId.replaceAll("/", "-").replaceAll("+", "_"); // Convert ewsId to restId
    var getMessageUrl = (Office.context.mailbox.restUrl || 'https://outlook.office365.com/api') + '/v2.0/me/messages/' + restId;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', getMessageUrl);
    xhr.setRequestHeader('Prefer', 'outlook.body-content-type="html"') // for retrieving body as HTML
    xhr.setRequestHeader("Authorization", "Bearer " + token);
    xhr.onload = (e) => {
      var json = JSON.parse(xhr.responseText);
      var emailBody = json.Body.Content;
    }
    xhr.send();
  });
person user2773447    schedule 07.07.2020