当我使用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添加内嵌图像。
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"
}
}
}
那么如何正确添加内嵌图像?
答案 0 :(得分:0)
很奇怪,我试图再次运行完全相同的代码,它现在不会给我任何错误。
POST /me/messages/{messageId}/attachments
{
"@odata.type": "#microsoft.graph.fileAttachment",
"name": "1.jpg",
"isInline": true,
"contentId": "myContentId",
"contentBytes": "validBase64Bytes"
}
不确定这是否是临时问题。我将通知Microsoft团队检查日志。
如果我对如何使用API有误,请务必指出。感谢。
我将把它留给这里以供将来人们节省一些时间来实现添加内联图像。