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

Power Automate调用Graph API发邮件报无法读取JSON请求负载错误

错误触发原因
  • 核心原因是请求体JSON格式非法:直接将带HTML标签的邮件正文硬拼接进JSON结构时,HTML代码中包含的双引号(常用于标签属性定义,比如<td style="color:red">里的引号)、换行符、反斜杠等特殊字符没有做JSON合规转义,会直接打断JSON字符串的语法结构,导致Graph API无法正常解析payload。
    注意:这个报错和HTML内容本身无关,哪怕正文是普通纯文本,只要包含未转义的JSON特殊字符,一样会触发相同错误
  • 次要原因是请求头配置缺失或错误:调用接口时未正确添加Content-Type: application/json请求头,或错将Content-Type设置为text/html、multipart/form-data等其他类型,接口会按照错误的格式规则解析请求,直接报payload读取失败。
  • Power Automate本身的拼接逻辑陷阱:如果直接将存储HTML内容的动态变量插入手写的JSON字符串中,平台不会自动做JSON转义处理,运行时拼接出的内容会天然存在语法断裂问题。
可行解决方案
  • 先修正请求头配置:在「Invoke an HTTP request」操作的Headers配置区,明确添加键值对Content-Type : application/json,不要遗漏,也不要填写其他类型值。
  • 不要手动硬拼完整JSON字符串,使用平台内置函数自动转义HTML特殊字符:将你编写好的HTML邮件正文存入字符串变量后,调用escapeJson()函数处理该变量,自动将所有会破坏JSON结构的特殊字符转义为JSON兼容格式,比如双引号转义为\"、换行符转义为\n、反斜杠转义为\\,从根源上避免JSON结构损坏。
  • 参考正确的请求体构造方式,示例代码如下:
{
  "message": {
    "subject": "填写你的邮件主题",
    "body": {
      "contentType": "HTML",
      "content": "@{escapeJson(variables('你的HTML邮件正文变量名'))}"
    },
    "toRecipients": [
      {
        "emailAddress": {
          "address": "填写收件人邮箱地址"
        }
      }
    ]
  },
  "saveToSentItems": true
}
  • 更稳妥的低出错率构造方式:可以先使用「Compose」操作拼装好message对象的所有字段(主题、正文、收件人等),再将Compose的输出直接作为HTTP请求的body传入,平台会自动完成JSON序列化,完全不需要手动处理转义问题。
  • 排错技巧:如果调用仍然失败,可查看Flow失败运行记录里的实际请求原始payload,将内容复制到JSON校验工具中检查,即可快速定位具体的语法断裂位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:27:21