使用SendGrid子账户通过cURL发送测试邮件报错求助
问题根源及解决方案
你的错误完全是Windows CMD环境下的引号解析规则导致的——CMD不识别单引号作为字符串边界,会把单引号当成普通字符处理,直接拆分你的命令参数,才出现了"Could not resolve host: application"和范围解析错误。
修正后的cURL命令(适配Windows CMD)
把所有单引号替换成双引号,同时JSON内部的双引号必须用\"转义,最终命令如下:
curl --request POST --url https://api.sendgrid.com/v3/mail/send --header "Authorization: Bearer %SENDGRID_API_KEY%" --header "Content-Type: application/json" --data "{\"personalizations\": [{\"to\": [{\"email\": \"你的目标邮箱@xxx.com\"}]}],\"from\": {\"email\": \"你的发件邮箱@xxx.com\"},\"subject\": \"Sending with SendGrid is Fun\",\"content\": [{\"type\": \"text/plain\", \"value\": \"and easy to do anywhere, even with cURL\"}]}"
关键调整点
- 将原命令中所有包裹参数的单引号
'替换为双引号" - JSON结构里的所有双引号
"都要添加反斜杠转义成\",否则CMD会提前截断JSON字符串 - 环境变量
%SENDGRID_API_KEY%的写法是正确的,无需修改
如果之后切换到PowerShell执行,规则会不同(PowerShell支持单引号,但环境变量要写成$env:SENDGRID_API_KEY),但当前CMD环境下按上面的命令执行即可解决问题。
内容的提问来源于stack exchange,提问作者mc301
相关产品推荐
相关产品推荐

