【问题标题】:SendGrid API V3 returns 400 Bad RequestSendGrid API V3 返回 400 错误请求
【发布时间】:2016-10-28 11:16:28
【问题描述】:

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

以下是我作为 POST 方法的主体发送的 JSON

{
  "content" : [
    {
      "type" : "text\/plain",
      "value" : "Hello, World!"
    }
  ],
  "personalizations" : [
    {
      "to" : [
        {
          "email" : "sahpranav1712@gmail.com"
        }
      ],
      "subject" : "Hello, World!"
    }
  ],
  "from" : {
    "email" : "iospranav1712@gmail.com"
  }
}

以下是我得到的回报

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

这条信息没有多大帮助。

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

也许,我可能错过了SendGrid App 中的某些设置

如果它有助于我使用 Objective-C。

请帮忙!!

【问题讨论】:

  • 你指向的网址是什么?
  • @jacobmovingfwd 它的api.sendgrid.com/v3/mail/send。使用 POST 方法
  • 你好@jacobmovingfwd。注意到一些有趣的事情!使用 AFNetworking 库时出现此错误,但是当我使用本机 iOS 网络库时,我获得了成功。对此进行更多调查!
  • 实现了!!非常感谢!!

标签: sendgrid bad-request


【解决方案1】:

我遇到了同样的问题,问题实际上是personalizations 字段中的所有替换都必须是字符串值(请参阅https://github.com/sendgrid/sendgrid-php/issues/264

"personalizations": [{
    "to": [{
        "email": "mail@gmail.com"
    }],
    "substitutions": {
        "{myFloatVal}": 16.5,
        "{firstname}": "Thomas"
    }
}]

【讨论】:

  • 谢谢,Sendgrid 确实需要添加更好的错误消息响应
【解决方案2】:

为什么你从 SendGrid 得到400 BAD REQUEST 只能猜测。 400 BAD REQUEST 表示哦,我们知道发生了什么,只是没有告诉你。

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

一个可能的原因,在我的例子中,CC 地址之一也是 TO 地址。您会看到,SendGrid 不允许电子邮件地址在发送请求中多次出现,并且如果您碰巧在任何 TO、CC 或 BCC 列表中多次列出电子邮件收件人,则 SendGrid 只是发送返回 400 错误请求。

400 BAD REQUEST 还有许多其他记录不充分的原因,我衷心祝愿你能找到 SendGrid 拒绝你的原因。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 最高批准的答案似乎更好地描述了它,但这个答案是有意义的,因为它可能会将非字符串值转换为字符串作为序列化过程的一部分。尽管如此,我没有投票,因为我无法在我的代码库中快速确认此解决方案(没有看到我可以轻松设置此信息的位置)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多