Я создаю новую реагирующую надстройку Outlook, и мне нужно иметь возможность загрузить текущую электронную почту.
Office. js API имеет метод getFileAsyn c из Office.context. объект документа, но не объект Office.context.mailbox.item.
также в качестве требования это должно работать как в Office, так и в локальной установке Outlook.
В существующем ком-дополнении у меня был прямой доступ к почтовому элементу.
Вот код, который мне в настоящее время приходится вызывать в API, но это только возвращает метаданные.
/*
https://docs.microsoft.com/en-us/outlook/add-ins/use-rest-api#get-the-item-id
*/
public getMessageViaRest = () => {
const context: Office.AsyncContextOptions & { isRest: boolean } = {
isRest: true
};
Office.context.mailbox.getCallbackTokenAsync(context, (tokenResults) => {
if (tokenResults.status === Office.AsyncResultStatus.Failed) {
this.setState({ error: 'Failed to get rest api auth token' });
return;
}
const apiId: string = Office.context.mailbox.convertToRestId(Office.context.mailbox.item.itemId, 'v2.0');
const apiUrl = Office.context.mailbox.restUrl + '/v2.0/me/messages/' + apiId;
try {
fetch(apiUrl, {
method: 'GET',
headers: new Headers({
Authorization: 'Bearer ' + tokenResults.value
})
}).then((response) => {
response.json().then((body) => {
for (const key in body) {
this.state.details.push({ name: key, value: JSON.stringify(body[key]) });
}
this.forceUpdate();
});
});
} catch (error) {
this.setState({ error: JSON.stringify(error) });
}
});
}