SendGrid API V3 返回 400 错误请求

问题描述 投票:0回答:7

我正在尝试通过 SendGrid API 实现邮件发送。

以下是我作为 POST 方法正文发送的 JSON

{
  "content" : [
    {
      "type" : "text\/plain",
      "value" : "Hello, World!"
    }
  ],
  "personalizations" : [
    {
      "to" : [
        {
          "email" : "[email protected]"
        }
      ],
      "subject" : "Hello, World!"
    }
  ],
  "from" : {
    "email" : "[email protected]"
  }
}

以下是我得到的回报

{"message":"Bad Request","field":null,"help":null}

这条信息没有多大帮助。

授权已经到位,我相信是正确的。

也许,我可能错过了 SendGrid 应用程序

中的某些设置

如果对我使用 Objective-C 有帮助的话。

请帮忙!!

sendgrid bad-request
7个回答
16
投票

我遇到了同样的问题,问题实际上是

personalizations
字段中的所有替换都需要是字符串值(请参阅https://github.com/sendgrid/sendgrid-php/issues/264

"personalizations": [{
    "to": [{
        "email": "[email protected]"
    }],
    "substitutions": {
        "{myFloatVal}": 16.5,
        "{firstname}": "Thomas"
    }
}]

15
投票

400 BAD REQUEST 到底是什么?

为什么你会从 SendGrid 获得

400 BAD REQUEST
,人们只能猜测。
400 BAD REQUEST
意味着哦,我们可能知道发生了什么,只是没有告诉你。

这是一种常见的“错误处理技术”,开发人员捕获错误并简单地返回 false,隐藏失败的任何细节或原因。

检查重复地址。

一个可能的原因,就像我的情况一样,CC 地址之一也是 TO 地址。您会看到,除其他事项外,SendGrid 不允许电子邮件地址在发送请求中出现多次,并且如果您碰巧在任何“收件人”、“抄送”或“密件抄送”列表中多次列出电子邮件收件人,SendGrid 只会发送返回 400 错误请求。

其他原因

400 BAD REQUEST 还有许多其他记录不详的原因,我真诚地祝您好运,找出 SendGrid 拒绝您的原因。这里的其他答案之一可能会对您有所帮助。


3
投票

虽然这是一个老问题,但以下内容可能对其他人有帮助。

如果您使用动态模板,请确保 ID 正确。仪表板不适合轻松复制模板 ID,这意味着可以轻松地在 ID 前面添加额外的空格。 通过在模板的 id 中添加空格(或任何其他字符),SendGrid 将简单地回复错误请求,而不会让您知道原因。


2
投票

我的经验通常是身体必须没有任何新线( 或者 例如),否则会返回400错误。当我清除任何新行时,它会起作用,我通常使用类似的东西:

reg_replace('/\s\s+/', ' ', $message)

2
投票

也检查电子邮件列表。如果您的 BCC 或列出 Sendgrid 中存在 null 或空字符串,则会抛出 BAD 请求。


1
投票

未设置

[manager setRequestSerializer:[AFJSONRequestSerializer serializer]];
是问题!!!


0
投票

就我而言,它确实报告了错误是什么,我只需要做:

console.error("Error Body:", error.response.body)

它告诉我类别不能有任何非 ASCII 字符

© www.soinside.com 2019 - 2024. All rights reserved.