Microsoft Graph API过滤并选择邮件/附件

时间:2018-03-12 14:09:08

标签: microsoft-graph

目前我正在尝试在我自己的网络客户端中显示来自Outlook的邮件。所以我通过调用:

通过图表api接收所有邮件
https://graph.microsoft.com/v1.0/me/messages/

选择邮件后,我会通过以下方式获取内容:

https://graph.microsoft.com/v1.0/me/messages/{message.id}

这为我提供了邮件本身,并使用message / body /内容,我可以为用户显示邮件。

消息本身可以包含内嵌图像(在img标记中使用cid:)。在这种情况下,图像可作为邮件的附件。所有附件都可以通过以下方式访问:

https://graph.microsoft.com/v1.0/me/messages/{message.id}/attachments

不幸的是,我只想获得可视化邮件所需的这些附件的内容(一些徽标等),而不是附加的PowerPoint-Presentation。如果我们首先看一下上面调用的内容,看起来很容易实现所需的行为:

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('{user-id}')/messages('message-id')/attachments",
    "value": [
        {
            "@odata.type": "#microsoft.graph.fileAttachment",
            "id": "{attachment-id}",
            "lastModifiedDateTime": "2018-03-12T14:08:56Z",
            "name": "justSomeFileName.jpg",
            "contentType": "image/jpeg",
            "size": 3049,
            "isInline": true,
            "contentId": "ii_jek0lxzn0_1620b160dff814aa",
            "contentLocation": null,
            "contentBytes": "{base64 string length:3736}"
        },
        {
            "@odata.type": "#microsoft.graph.fileAttachment",
            "id": "{attachment-id}",
            "lastModifiedDateTime": "2018-03-12T14:07:38Z",
            "name": "my presentation.pptx",
            "contentType": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
            "size": 184754,
            "isInline": false,
            "contentId": "CA6D0D1EAE042D4A81A110524C30BF01@eurprd03.prod.outlook.com",
            "contentLocation": null,
            "contentBytes": "{base64 string length:245704}"
        }
    ]
}

但这是我的问题:

为了获得真正需要的附件以使用图片可视化邮件,我尝试了几个查询,但都没有成功:

  • 全力以赴IsInline equals true

    https://graph.microsoft.com/v1.0/me/messages/{message.id}/attachments/?$filter=isInline eq true
    

    最明显的一个。不幸的是,它会返回所有附件,而不会应用任何过滤。

  • 全部获取,但使用select仅获取id和contentId:

    https://graph.microsoft.com/v1.0/me/messages/{message.id}/attachments/?$select=id,contentId
    

    不是那么有效,因为我们必须进行两次调用(另一次通过调用/messages/{message.id}/attachments/{attachment-id}来获取内容),但更好的是没有。不幸的是,这会返回以下错误消息:

      

    “无法在类型'microsoft.graph.attachment'上找到名为'contentId'的属性。”

  • 获取除contentBytes以外的所有属性的所有附件:

    为此,我在documentation内找不到任何内容。所以像$except=contentBytes这样的东西只能得到所有附件的元信息而没有具体的数据本身。

那么,是否存在任何方法来过滤类型#microsoft.graph.fileAttachment的属性上的附件或获取所有附件的元信息而没有属性contentBytes

0 个答案:

没有答案