我正在为outlook开发Office Addin,我使用以下结构,请帮助。
Office.context.mailbox.item.body.getAsync()
方法在Office 365中运行良好,但是当涉及到内部交换服务器2013时,它可以在Outlook客户端中运行,但在Outlook Web应用程序中不起作用。最低邮箱要求集版本为1.3
答案 0 :(得分:1)
这是预期的。 Office.context.mailbox.item.body.getAsync
最低邮箱要求版本受 1.3 级别API影响。同时根据" Understanding Outlook API requirement sets" Outlook Web App(Exchange 2013内部部署)仅支持 1.1 级别的API。
答案 1 :(得分:0)
您可以通过调用Office.context.mailbox.getCallbackTokenAsync
方法并向EWS服务器进行Ajax调用来检索Office Mailbox API 1.1及更高版本中的电子邮件正文。 Microsoft提供的示例位于以下链接:
我的工作示例:
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();
});