如何通过Microsoft Graph API添加内嵌图像?

时间:2017-11-30 09:50:56

标签: json outlook microsoft-graph

背景

当我使用Outlook客户端发送带有内嵌图像的邮件时。

html电子邮件中的图片如下所示,其中包含 cid

<img size="100" src="cid:3bb599fc-f3eb-465b-af83-aa6a495f563a" style="max-width:100%">

当我使用

GET /me/messages/{messageId}/attachments

返回的结果中的 contentId 与html中的 cid 相匹配。

{
    "value": [
        {
            "@odata.type": "#microsoft.graph.fileAttachment",
            "id": "aaa",
            "lastModifiedDateTime": "2017-11-30T09:32:09Z",
            "name": "image.png",
            "contentType": "image/png",
            "size": 100,
            "isInline": true,
            "contentId": "3bb599fc-f3eb-465b-af83-aa6a495f563a",
            "contentLocation": null,
            "contentBytes": "validBase64Bytes"
        }
    ]
}

使用Microsoft Graph API

现在我正在尝试使用Microsoft Graph API添加内嵌图像。

POST /me/messages/{messageId}/attachments
{
  "@odata.type": "#microsoft.graph.fileAttachment",
  "name": "1.jpg",
  "isInline": true,
  "contentBytes": "validBase64Bytes"
}

但是,返回的结果中contentId为空。

{
    "@odata.type": "#microsoft.graph.fileAttachment",
    "id": "aaa",
    "lastModifiedDateTime": "2017-11-30T09:35:50Z",
    "name": "1.jpg",
    "contentType": "image/jpeg",
    "size": 100,
    "isInline": true,
    "contentId": null,
    "contentLocation": null,
    "contentBytes": "validBase64Bytes"
}

如果我在POST中手动设置contentId

POST /me/messages/{messageId}/attachments
{
  "@odata.type": "#microsoft.graph.fileAttachment",
  "name": "1.jpg",
  "isInline": true,
  "contentId": "myContentId",
  "contentBytes": "validBase64Bytes"
}

它将返回错误

{
    "error": {
        "code": "BadRequest",
        "message": "Unable to read JSON request payload. Please ensure Content-Type header is set and payload is of valid JSON format.",
        "innerError": {
            "request-id": "36e95f0a-ad75-46c6-b86c-d585a150b96d",
            "date": "2017-11-30T09:37:41"
        }
    }
}

那么如何正确添加内嵌图像?

1 个答案:

答案 0 :(得分:0)

很奇怪,我试图再次运行完全相同的代码,它现在不会给我任何错误。

POST /me/messages/{messageId}/attachments
{
  "@odata.type": "#microsoft.graph.fileAttachment",
  "name": "1.jpg",
  "isInline": true,
  "contentId": "myContentId",
  "contentBytes": "validBase64Bytes"
}

不确定这是否是临时问题。我将通知Microsoft团队检查日志。

如果我对如何使用API​​有误,请务必指出。感谢。

我将把它留给这里以供将来人们节省一些时间来实现添加内联图像。