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

使用SendGrid V3 API发送邮件:JSON格式不符问题求助

修正SendGrid V3 API邮件格式问题

问题出在你的PHP数组结构上——SendGrid V3 API明确要求personalizations和to字段都是数组类型(哪怕你只需要发送给一组收件人、一个用户),但你当前的写法把它们定义成了普通关联数组,导致json_encode后变成了对象而非数组,不符合API的格式要求。

修正后的PHP代码

$email_content = [
    'personalizations' => [
        [
            'to' => [
                [
                    'email' => 'ashuomble5@gmail.com',
                    'name' => 'Ashutosh'
                ]
            ],
            'subject' => 'Test'
        ]
    ],
    'from' => [
        'email' => 'ashuomble5@gmail.com',
        'name' => 'Ashu'
    ],
    'reply_to' => [
        'email' => 'ashuomble5@gmail.com',
        'name' => 'AO'
    ],
    'content' => [
        [
            'type' => 'text/plain',
            'value' => 'Hello'
        ]
    ]
];

关键修正点

  • personalizations:原来的关联数组被包裹进了一个索引数组[]里,这样json_encode后会输出为数组格式[],符合API要求(支持多组个性化设置)
  • to:单个收件人信息同样被包裹进索引数组[],确保输出为数组格式,后续也方便添加多个收件人
  • content:同样调整为数组包裹的结构,因为SendGrid支持同时发送文本和HTML格式的内容

修正后json_encode的输出

{
  "personalizations": [
    {
      "to": [
        {
          "email": "ashuomble5@gmail.com",
          "name": "Ashutosh"
        }
      ],
      "subject": "Test"
    }
  ],
  "from": {
    "email": "ashuomble5@gmail.com",
    "name": "Ashu"
  },
  "reply_to": {
    "email": "ashuomble5@gmail.com",
    "name": "AO"
  },
  "content": [
    {
      "type": "text/plain",
      "value": "Hello"
    }
  ]
}

这个格式完全匹配SendGrid V3 API的要求,现在你可以正常调用API发送邮件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:24:45