在 Outlook 插件中使用 Graph 阅读 MIME 格式的电子邮件
Using Graph in Outlook addin to read email in MIME format
我对 Outlook 插件开发感到迷茫,真的需要一些帮助。
我开发了一个插件,可以通过 REST API 将选定的电子邮件发送到另一台服务器,它工作正常,但有 1MB 的限制,所以我尝试开发一个使用 ewsURL + SOAP 但面临 CORS 问题的解决方案。
现在我得到了使用 GRAPH 方法的建议(对我来说没问题),但我不知道如何使用 JavaScript。
基本上我需要收到一封 MIME/EML 格式的电子邮件。
我被引导查看这篇文章:https://docs.microsoft.com/en-us/graph/outlook-get-mime-message
有一个看起来很有希望的端点:
https://graph.microsoft.com/v1.0/me/messages/4aade2547798441eab5188a7a2436bc1/$value
但是我没有看到解释
- 如何进行授权流程?
- 我尝试从 getCallbackTokenAsync 获取令牌,但没有成功
- 我已尝试 Office.context.auth.getAccessTokenAsync 但遇到问题:
Error code: 13000 Error name: API Not Supported.
Error message: The identity API is not supported for this add-in.
- 如何获取电子邮件 ID
- 我已经尝试过 Office.context.mailbox.item.itemId 但它看起来与我在示例中看到的不同(但希望这不是问题)
请帮忙:-)
这里有2个解决方案。从长远来看,最好使用 https://docs.microsoft.com/en-us/office/dev/add-ins/develop/authorize-to-microsoft-graph and you can use https://graph.microsoft.com/v1.0/me/messages/4aade2547798441eab5188a7a2436bc1/$value 的图形端点。但是,此解决方案需要后端/服务。对于大型内容,最好通过后端传输,这样内容可以直接从 Exchange 传输到服务。
或者,您可以从 getCallbackTokenAsync 获取令牌,从这个文档:https://docs.microsoft.com/en-us/office/dev/add-ins/outlook/use-rest-api
正如您所指出的,您将需要使用 convertToRestId 来翻译 ews id。放在一起,您的解决方案应如下所示:
Office.context.mailbox.getCallbackTokenAsync({isRest: true}, function(result){
if (result.status === "succeeded") {
let token = result.value;
var ewsItemId = Office.context.mailbox.item.itemId;
const itemId = Office.context.mailbox.convertToRestId(
ewsItemId,
Office.MailboxEnums.RestVersion.v2_0);
// Request the message's attachment info
var getMessageUrl = Office.context.mailbox.restUrl +
'/v2.0/me/messages/' + itemId + '/$value';
var xhr = new XMLHttpRequest();
xhr.open('GET', getMessageUrl);
xhr.setRequestHeader("Authorization", "Bearer " + token);
xhr.onload = function (e) {
console.log(this.response);
}
xhr.onerror = function (e) {
console.log("error occurred");
}
xhr.send();
}
});
我对 Outlook 插件开发感到迷茫,真的需要一些帮助。 我开发了一个插件,可以通过 REST API 将选定的电子邮件发送到另一台服务器,它工作正常,但有 1MB 的限制,所以我尝试开发一个使用 ewsURL + SOAP 但面临 CORS 问题的解决方案。
现在我得到了使用 GRAPH 方法的建议(对我来说没问题),但我不知道如何使用 JavaScript。
基本上我需要收到一封 MIME/EML 格式的电子邮件。
我被引导查看这篇文章:https://docs.microsoft.com/en-us/graph/outlook-get-mime-message
有一个看起来很有希望的端点:
https://graph.microsoft.com/v1.0/me/messages/4aade2547798441eab5188a7a2436bc1/$value
但是我没有看到解释
- 如何进行授权流程?
- 我尝试从 getCallbackTokenAsync 获取令牌,但没有成功
- 我已尝试 Office.context.auth.getAccessTokenAsync 但遇到问题:
Error code: 13000 Error name: API Not Supported. Error message: The identity API is not supported for this add-in.
- 如何获取电子邮件 ID
- 我已经尝试过 Office.context.mailbox.item.itemId 但它看起来与我在示例中看到的不同(但希望这不是问题)
请帮忙:-)
这里有2个解决方案。从长远来看,最好使用 https://docs.microsoft.com/en-us/office/dev/add-ins/develop/authorize-to-microsoft-graph and you can use https://graph.microsoft.com/v1.0/me/messages/4aade2547798441eab5188a7a2436bc1/$value 的图形端点。但是,此解决方案需要后端/服务。对于大型内容,最好通过后端传输,这样内容可以直接从 Exchange 传输到服务。
或者,您可以从 getCallbackTokenAsync 获取令牌,从这个文档:https://docs.microsoft.com/en-us/office/dev/add-ins/outlook/use-rest-api 正如您所指出的,您将需要使用 convertToRestId 来翻译 ews id。放在一起,您的解决方案应如下所示:
Office.context.mailbox.getCallbackTokenAsync({isRest: true}, function(result){
if (result.status === "succeeded") {
let token = result.value;
var ewsItemId = Office.context.mailbox.item.itemId;
const itemId = Office.context.mailbox.convertToRestId(
ewsItemId,
Office.MailboxEnums.RestVersion.v2_0);
// Request the message's attachment info
var getMessageUrl = Office.context.mailbox.restUrl +
'/v2.0/me/messages/' + itemId + '/$value';
var xhr = new XMLHttpRequest();
xhr.open('GET', getMessageUrl);
xhr.setRequestHeader("Authorization", "Bearer " + token);
xhr.onload = function (e) {
console.log(this.response);
}
xhr.onerror = function (e) {
console.log("error occurred");
}
xhr.send();
}
});