You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Microsoft Graph API SendEmail请求体中添加.ics附件

使用Microsoft Graph API发送带.ics附件邮件的正确操作

要解决.ics内容添加为邮件附件的问题,核心是Graph API要求fileAttachment的contentBytes字段必须填入Base64编码后的二进制内容,不能直接放置文本。具体操作步骤如下:

1. 将.ics文本转换为Base64编码

把你提供的.ics完整文本,通过Base64编码工具(或代码逻辑,比如Python的base64.b64encode()、JavaScript的btoa())转换为Base64字符串。例如,你给出的.ics内容转换后会生成一段长字符串。

2. 修改请求体的附件配置

调整请求体中attachments数组的参数,确保:

  • name设置为正确的文件名(如"invite.ics")
  • contentType改为"text/calendar"(让邮件客户端识别为日历邀请,而非通用二进制文件)
  • contentBytes填入转换后的Base64字符串

3. 完整请求体示例

{
  "message": {
    "subject": "<MAIL_SUBJECT>",
    "body": {
      "contentType": "HTML",
      "content": "<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>\n<html>\n<head>\n<meta http-equiv=content-type content=text/html; charset=ISO-8859-1>\n<style>\nbody{\n                font-family:Calibri,Verdana, Geneva, sans-serif;\n                }\n</style>\n</head>\n<body bgcolor=#ffffff text=#000000>\n\nstuff here\n\n</body>\n</html>\n"
    },
    "toRecipients": [
      {
        "emailAddress": {
          "address": "<TO_EMAILADDRESS>"
        }
      }
    ],
    "attachments": [
      {
        "@odata.type": "#microsoft.graph.fileAttachment",
        "name": "invite.ics",
        "contentType": "text/calendar",
        "contentBytes": "BASE64_ENCODED_ICS_CONTENT_HERE"
      }
    ],
    "from": {
      "emailAddress": {
        "name": "mail",
        "address": "<test@mail.com>"
      }
    }
  },
  "saveToSentItems": "true"
}

注意事项

  • 确保Base64编码过程中没有遗漏.ics文本的任何内容,包括换行符和特殊字符
  • 如果使用代码生成请求体,注意处理JSON字符串的转义问题(比如HTML内容中的换行要转义为\n)

内容的提问来源于stack exchange,提问作者Berkay Koralturk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:30:05