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

Hongbo Miao

背景

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

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

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

当我使用

GET /me/messages/{messageId}/attachments

返回结果中contentIdhtml 中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返回的结果中为 null。

{
    "@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"
}

如果我contentId在 POST 中手动设置

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"
        }
    }
}

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

Hongbo Miao

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

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

不知道是不是暂时的问题。我会通知微软团队检查日志。

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过Microsoft graph api检索用户的图像

从 Microsoft Graph Api 接收图像

如何同意通过 Microsoft Graph Webhook API 订阅?

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

如何通过Microsoft Graph API获取当前用户的Delve URL

通过 Microsoft Graph API 创建用户

如何通过Microsoft Graph API / SDK将自适应卡发送给Microsoft团队?

如何增加Microsoft Graph API订阅限制?

如何使用Microsoft Graph API获取AppKey

Microsoft Graph API-如何更新userSMIMECertificate

通过Microsoft Graph添加或删除应用程序的API权限(requiredResourceAccess)

如何从Microsoft Search API获取“ @ microsoft.graph.downloadUrl”?

如何在 Microsoft Graph API 的访问令牌中添加权限

如何通过 Microsoft Graph API 迭代 Sharepoint 站点的文档库项目?

如何通过Microsoft Graph API更新日历事件时通知用户

如何使用Microsoft Graph API通过通讯组列表电子邮件过滤组?

如何通过Microsoft Graph API在Sharepoint中为文档创建共享链接

如何使用Microsoft Graph API通过自定义列值查找SharePoint文档

通过 Microsoft Graph API 在 Excel 中搜索行

Microsoft Graph API-通过internetmessageid查找消息

通过Graph API从Microsoft Planner任务中检索附件

通过Microsoft Graph API检索SharePoint Online对象权限

Microsoft Graph:通过Rest API下载文件

使用访问令牌通过Microsoft Graph API与OneDrive进行交互

无法识别通过 powershell 的 Microsoft Graph API 查询参数

通过 Microsoft Graph API 从 SharePoint 获取所有网站

如何使用控制台应用程序通过Microsoft Graph API调用Microsoft Teams OnlineMeeting端点?

如何通过Microsoft graph API C#在Microsoft Teams中将消息发送到1:1聊天或群聊

无法使用Microsoft Graph API添加应用程序分配