Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Office365 如何通过Microsoft Graph API检索itemAttachment的内容_Office365_Office365api_Azure Ad Graph Api - Fatal编程技术网

Office365 如何通过Microsoft Graph API检索itemAttachment的内容

Office365 如何通过Microsoft Graph API检索itemAttachment的内容,office365,office365api,azure-ad-graph-api,Office365,Office365api,Azure Ad Graph Api,我目前正在开发一个解决方案,通过Microsoft Graph API检索电子邮件。2015年11月,微软宣布它已经准备好生产,我在另一篇论坛帖子中读到,如果你现在开始使用微软API进行开发,你应该使用Graph API,因为它是未来的发展方向 一切都很顺利,除了一件事,那就是以下几点 我必须找回电子邮件。这些电子邮件中当然有附件。这些附件有一些变化。文件附件(图像、文档等)、参考附件和项目附件(outlook项目)。这里的问题是项目附件。itemAttachment可以是从约会到其他邮件的任何

我目前正在开发一个解决方案,通过Microsoft Graph API检索电子邮件。2015年11月,微软宣布它已经准备好生产,我在另一篇论坛帖子中读到,如果你现在开始使用微软API进行开发,你应该使用Graph API,因为它是未来的发展方向

一切都很顺利,除了一件事,那就是以下几点

我必须找回电子邮件。这些电子邮件中当然有附件。这些附件有一些变化。文件附件(图像、文档等)、参考附件和项目附件(outlook项目)。这里的问题是项目附件。itemAttachment可以是从约会到其他邮件的任何内容。这里的问题是,我无法以某种方式获取和检索contentBytes,这对fileAttachments是有效的。与itemAttachment相关的对象是outlookItem。还有一个页面对此了望项目进行了描述,但缺少示例和详细信息。 用户权限设置为Mail.Read和Mail.ReadWrite

链接: 概述: 获取outlookItem(空?):

我收到的示例呼叫和响应。请注意附件的类型。 /用户//消息//附件

{
  "@odata.context": "link",
  "value": [
    {
      "@odata.type": "#microsoft.graph.fileAttachment",
      "id": "AAMkAGU2NmIwMTcxLTljYzUtNGRiMi1hZjczLTllNzhiZDRiNWZlZABGAAAAPAD_Lx_gimDGRqSr98J_O_e6BwDcWyYHlO7rS5_XpLHCx6NSAAIMC0V-AADcWyYHlO7rS5_XpLHCx6NSAAIMC6RgAAABEgAQAGhN_vm1RlBPt7V4N9a89UY=",
      "lastModifiedDateTime": "2016-01-13T14:25:33Z",
      "name": "image001.png",
      "contentType": "image/png",
      "size": 5077,
      "isInline": true,
      "contentId": "image001.png@01D14E16.A3A32480",
      "contentLocation": null,
      "contentBytes": "iVBORw0KGgoAAAANSUhEUgAAAKAAAACCCAIAAABOyVRHAAAAAXNSR0IArs4c6QAAEndJREFUeF7tXQ1QFFe2bkbU... (truncated)"
    },
    {
      "@odata.type": "#microsoft.graph.fileAttachment",
      "id": "AAMkAGU2NmIwMTcxLTljYzUtNGRiMi1hZjczLTllNzhiZDRiNWZlZABGAAAAPAD_Lx_gimDGRqSr98J_O_e6BwDcWyYHlO7rS5_XpLHCx6NSAAIMC0V-AADcWyYHlO7rS5_XpLHCx6NSAAIMC6RgAAABEgAQAFnSLgIC5wZOosmLtBWK8gE=",
      "lastModifiedDateTime": "2016-01-13T14:25:34Z",
      "name": "image002.png",
      "contentType": "image/png",
      "size": 3722,
      "isInline": true,
      "contentId": "image002.png@01D14E16.A3A32480",
      "contentLocation": null,
      "contentBytes": "iVBORw0KGgoAAAANSUhEUgAAAPoAAABSCAYAAAB9o8m+AAAAGXRFWHRTb... (truncated)"
    },
    {
      "@odata.type": "#microsoft.graph.fileAttachment",
      "id": "AAMkAGU2NmIwMTcxLTljYzUtNGRiMi1hZjczLTllNzhiZDRiNWZlZABGAAAAPAD_Lx_gimDGRqSr98J_O_e6BwDcWyYHlO7rS5_XpLHCx6NSAAIMC0V-AADcWyYHlO7rS5_XpLHCx6NSAAIMC6RgAAABEgAQANOuw7m8sW1Ot3MivYQ5OYU=",
      "lastModifiedDateTime": "2016-01-13T14:25:24Z",
      "name": "Knipsel.PNG",
      "contentType": null,
      "size": 7641,
      "isInline": false,
      "contentId": null,
      "contentLocation": null,
      "contentBytes": "iVBORw0KGgoAAAANSUhEUgAAAKAAAACCCAYAAADBq8MQAAA... (truncated)"
    },
    {
      "@odata.type": "#microsoft.graph.itemAttachment",
      "id": "AAMkAGU2NmIwMTcxLTljYzUtNGRiMi1hZjczLTllNzhiZDRiNWZlZABGAAAAPAD_Lx_gimDGRqSr98J_O_e6BwDcWyYHlO7rS5_XpLHCx6NSAAIMC0V-AADcWyYHlO7rS5_XpLHCx6NSAAIMC6RgAAABEgAQAPEUC740tjtAlNTe8NpopUI=",
      "lastModifiedDateTime": "2016-01-14T15:55:07Z",
      "name": "RE: Test met plaatje",
      "contentType": null,
      "size": 36972,
      "isInline": false
    }
  ]
}
我试图通过粘贴附件id来更改GET语句,无论是否粘贴消息路径和扩展功能(仅支持一级深度),但我似乎找不到解决方案。 我发现了一个问题,这与office365统一API是一样的


因此,问题是:如何通过MicrosoftGraphAPI检索Outlook项目的内容?我怎么知道会发生什么?谁能帮我克服这个障碍。

官方文件:。使用有效的承载身份验证访问代码,并在Azure管理门户上检查适当的Graph API权限。附件是基于64编码的字符串,位于
contentBytes
字段中。加载邮件附件列表的正确Uri为:邮件Id]/attachments。调用附件终结点的示例代码如下:

using (var client = new HttpClient())
{
    using (var request = new HttpRequestMessage(HttpMethod.Get, 
        "https://graph.microsoft.com/beta/me/messages/..id../attachments"))
    {
        request.Headers.Authorization = 
            new AuthenticationHeaderValue("Bearer", "...valid access token...");

        using (HttpResponseMessage response = await client.SendAsync(request))
        {
            if (response.StatusCode == HttpStatusCode.OK)
            {
                result = await response.Content.ReadAsStringAsync();
                var json = JObject.Parse(result);
            }
        }
    }
}

使用
$expand
选项:

GET https://graph.microsoft.com/v1.0/me/messages('AAMkADA1M-zAAA=')/attachments('AAMkADA1M-CJKtzmnlcqVgqI=')/?$expand=microsoft.graph.itemattachment/item 
答复:

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users('d1a2fae9-db66-4cc9-8133-2184c77af1b8')/messages('AAMkADA1M-zAAA%3D')/attachments/$entity",
  "@odata.type":"#microsoft.graph.itemAttachment",
  "id":"AAMkADA1MCJKtzmnlcqVgqI=",
  "lastModifiedDateTime":"2017-07-21T00:20:34Z",
  "name":"Reminder - please bring laptop",
  "contentType":null,
  "size":32005,
  "isInline":false,
  "item@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users('d1a2fae9-db66-4cc9-8133-2184c77af1b8')/messages('AAMkADA1M-zAAA%3D')/attachments('AAMkADA1M-CJKtzmnlcqVgqI%3D')/microsoft.graph.itemAttachment/item/$entity",
  "item":{
    "@odata.type":"#microsoft.graph.message",
    "id":"",
    "createdDateTime":"2017-07-21T00:20:41Z",
    "lastModifiedDateTime":"2017-07-21T00:20:34Z",
    "receivedDateTime":"2017-07-21T00:19:55Z",
    "sentDateTime":"2017-07-21T00:19:52Z",
    "hasAttachments":false,
    "internetMessageId":"<BY2PR15MB05189A084C01F466709E414F9CA40@BY2PR15MB0518.namprd15.prod.outlook.com>",
    "subject":"Reminder - please bring laptop",
    "importance":"normal",
    "conversationId":"AAQkADA1MzMyOGI4LTlkZDctNDkzYy05M2RiLTdiN2E1NDE3MTRkOQAQAMG_NSCMBqdKrLa2EmR-lO0=",
    "isDeliveryReceiptRequested":false,
    "isReadReceiptRequested":false,
    "isRead":false,
    "isDraft":false,
    "webLink":"https://outlook.office365.com/owa/?ItemID=AAMkADA1M3MTRkOQAAAA%3D%3D&exvsurl=1&viewmodel=ReadMessageItem",
    "body":{
      "contentType":"html",
      "content":"<html><head>\r\n</head>\r\n<body>\r\n</body>\r\n</html>"
    },
    "sender":{
      "emailAddress":{
        "name":"Adele Vance",
        "address":"AdeleV@contoso.onmicrosoft.com"
      }
    },
    "from":{
      "emailAddress":{
        "name":"Adele Vance",
        "address":"AdeleV@contoso.onmicrosoft.com"
      }
    },
    "toRecipients":[
      {
        "emailAddress":{
          "name":"Alex Wilbur",
          "address":"AlexW@contoso.onmicrosoft.com"
        }
      }
    ],
    "ccRecipients":[
      {
        "emailAddress":{
          "name":"Adele Vance",
          "address":"AdeleV@contoso.onmicrosoft.com"
        }
      }
    ]
  }
}
HTTP/1.1200正常
内容类型:application/json
{
“@odata.context”:”https://graph.microsoft.com/v1.0/$metadata#用户('d1a2fae9-db66-4cc9-8133-2184c77af1b8')/messages('AAMkADA1M-zAAA%3D')/attachments/$entity“,
“@odata.type”:“#microsoft.graph.itemAttachment”,
“id”:“AAMkADA1MCJKtzmnlcqVgqI=”,
“lastModifiedDateTime”:“2017-07-21T00:20:34Z”,
“姓名”:“提醒-请携带笔记本电脑”,
“contentType”:空,
“尺寸”:32005,
“isInline”:错误,
"item@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users('d1a2fae9-db66-4cc9-8133-2184c77af1b8')/消息('AAMkADA1M-zAAA%3D')/附件('AAMkADA1M-CJKtzmnlcqVgqI%3D')/microsoft.graph.itemAttachment/item/$entity“,
“项目”:{
“@odata.type”:“#microsoft.graph.message”,
“id”:“,
“createdDateTime”:“2017-07-21T00:20:41Z”,
“lastModifiedDateTime”:“2017-07-21T00:20:34Z”,
“接收日期时间”:“2017-07-21T00:19:55Z”,
“sentDateTime”:“2017-07-21T00:19:52Z”,
“hasAttachments”:假,
“internetMessageId”:“”,
“主题”:“提醒-请携带笔记本电脑”,
“重要性”:“正常”,
“对话ID”:“AAQKADA1MZMYGI4LTLKZDCNDKZY05M2RILDIN2E1NDE3MTRKQAMGnscmbqdkrla2EMR-lO0=”,
“isDeliveryReceiptRequested”:false,
“isReadReceiptRequested”:false,
“isRead”:错误,
“isDraft”:错误,
“网络链接”:https://outlook.office365.com/owa/?ItemID=AAMkADA1M3MTRkOQAAAA%3D%3D&exvsurl=1&viewmodel=ReadMessageItem",
“正文”:{
“内容类型”:“html”,
“内容”:“\r\n\r\n\r\n\r\n”
},
“发件人”:{
“电子邮件地址”:{
“姓名”:“阿黛勒·万斯”,
“地址”:AdeleV@contoso.onmicrosoft.com"
}
},
“发件人”:{
“电子邮件地址”:{
“姓名”:“阿黛勒·万斯”,
“地址”:AdeleV@contoso.onmicrosoft.com"
}
},
“收件人”:[
{
“电子邮件地址”:{
“姓名”:“亚历克斯·威尔伯”,
“地址”:AlexW@contoso.onmicrosoft.com"
}
}
],
“收件人”:[
{
“电子邮件地址”:{
“姓名”:“阿黛勒·万斯”,
“地址”:AdeleV@contoso.onmicrosoft.com"
}
}
]
}
}

资料来源:

没有人能给我任何线索、提示或解决方案吗?没有,不幸的是没有解决方案。嗯,我仍然不敢相信微软声称它已经准备好生产了(!):-(要获取附件列表,您需要知道邮件Id。当您有邮件Id时,您可以轻松调用邮件Id]/attachments with valid Bearer authentication!!!!使用有效的访问代码。此外,请确保您已为Azure管理门户上的此操作分配了足够的权限。附件的内容是base64编码的字符串,它位于contentBytes字段中。如果您有attachmentId,您可以使用usd。请检查此文档:。它是wokring fineHi Semen,感谢您调查此问题。但是,您的答案是关于一般附件,而这不是此处的问题。问题是关于获取itemAttachment的de内容。要模拟此情况,您可以n使用outlook客户端并将一封电子邮件作为附件转发到另一封电子邮件。您会注意到outlook客户端将其标识为outlook项目。正是这种附件我无法从中获取contentBytes。您设法做到了吗?API 1.0版现在是否功能更强?PS:不要使用Beta版生产解决方案Hi Dave,谢谢你的回答!这正是我想要的。现在我可以让客户成为一个非常高兴的客户,因为现在可以创建一个完整的电子邮件导入功能。再次感谢,我一定会尝试这个!!KR,BartYeah,这是大部分的方法。对我来说,一个突出的问题就是只使用get项目附件的字节。I