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

SendGrid singlesends接口send_at参数传递报错,求正确传参方式

问题原因与解决办法

不是文档有误,你的参数传递方式存在两处问题:

1. "send_at": "now" 不符合API格式要求

SendGrid的send_at参数要求传入RFC3339格式的UTC时间字符串(例如"2024-05-20T14:30:00Z"),直接传"now"是不合法的,会导致JSON解析失败。

  • 如果需要立即发送,直接省略send_at参数即可(你最初的命令已经验证过这种方式可行)。
  • 如果要明确指定当前时间,需生成符合格式的字符串再传入。

2. 命令替换的引号使用错误

第二个命令中,$(date ...)被包裹在单引号里,Bash不会解析单引号内的命令替换,导致API收到的send_at值是原始字符串"$(date --utc --iso=s --date='1 minute')",这显然不是合法的时间格式。

正确的延迟发送示例

先通过命令替换生成合法的时间字符串,再用双引号包裹JSON内容(注意转义JSON内部的双引号):

# 生成1分钟后的UTC时间(ISO8601格式)
SEND_AT=$(date --utc --iso=s --date='1 minute')

# 发送请求
curl -X POST "https://api.sendgrid.com/v3/marketing/singlesends" \
--header "Authorization: Bearer $SENDGRID_API_KEY" \
--header "Content-Type: application/json" \
--data "{\"name\": \"Miss Christine Morgan\", \"send_at\": \"$SEND_AT\"}"

或者用Here Document避免引号转义的麻烦:

SEND_AT=$(date --utc --iso=s --date='1 minute')

curl -X POST "https://api.sendgrid.com/v3/marketing/singlesends" \
--header "Authorization: Bearer $SENDGRID_API_KEY" \
--header "Content-Type: application/json" \
-d @- <<EOF
{"name": "Miss Christine Morgan", "send_at": "$SEND_AT"}
EOF

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:05:25