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

SendGrid API一次查询多分类邮件统计返回400错误如何解决?

问题根因

  • 配置执行顺序错误:setApiKey()方法会重置SendGrid客户端的所有默认请求配置,先设置数组序列化规则再调用setApiKey(),会导致前面的qsStringifyOptions配置被覆盖失效,数组格式的categories参数无法被正确序列化为API要求的格式,触发400错误。
  • SendGrid多分类统计接口要求多个分类参数必须以重复参数名的形式传递(格式为categories=cat1&categories=cat2),配置失效时数组会被默认序列化为categories[]=cat1&categories[]=cat2的格式,不符合接口要求。

修复方案

调整两个配置的调用顺序,先调用setApiKey(),再设置数组序列化规则,修改后代码如下:

const client = require('@sendgrid/client')
// 先设置API Key,避免覆盖后续的序列化配置
client.setApiKey(process.env.SENDGRID_API_KEY)
// 再设置数组序列化规则
client.setDefaultRequest('qsStringifyOptions', {arrayFormat: 'repeat'});

const request = {}
const queryParams = {
  'aggregated_by': 'day',
  'categories': ['cat1', 'cat2'],
  'start_date': '2021-08-01',
  'end_date': '2021-09-01',
  'limit': 5,
  'offset': 1
};
request.qs = queryParams;
request.method = 'GET';
request.url = '/v3/categories/stats';
client
  .request(request)
  .then(([response, body]) => {
    console.log(response.statusCode);
    console.log(response.body);
}).catch(function (error) {
    // 可打印完整错误详情排查问题
    console.log(error.response?.body?.errors || error)
  })

补充注意事项

  • 该接口单次查询最多支持传入10个分类,超过限制也会返回400错误。
  • 遇到错误时可在catch块中打印error.response.body.errors查看具体错误提示,比默认的简略报错信息更有排查价值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:24:02