在 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

但是我没有看到解释

  1. 如何进行授权流程?

Error code: 13000 Error name: API Not Supported. Error message: The identity API is not supported for this add-in.

  1. 如何获取电子邮件 ID

请帮忙:-)

这里有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();
  }

});