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

Azure DevOps API邮件发送问题:CURL命令无法发送邮件

解决Azure DevOps Send Mail API的clientMessage为空问题

你的问题出在请求体结构上——你把邮件内容嵌套在了message字段里,还做了不必要的双重转义,导致API无法解析出有效的clientMessage,所以抛出了空值错误。

Azure DevOps的Send Mail API要求请求体是直接包含收件人、主题、正文等字段的JSON对象,不需要额外包裹在message键下。修改你的curl命令的--data参数即可:

ADO_API=$(echo "$(System.CollectionUri)$(System.TeamProject)/_apis/wit/sendmail?api-version=7.1-preview.1")               
curl --request POST "$ADO_API" \
              --header "Authorization: Bearer $SYSTEM_ACCESSTOKEN" \
              --header "Accept: application/json" \
              --header "Content-Type: application/json" \
              --data '{
                  "to": {"emailAddresses": ["my_email_address"]},
                  "subject": "Test email",
                  "body": "Empty body",
                  "replyTo": {"emailAddresses": ["my_email_address"]}
              }'

关键修改点:

  • 移除了外层的"message"键,直接传递邮件结构的JSON
  • 用单引号包裹整个JSON内容,内部双引号无需转义(Bash中单引号内的内容会被原样解析)
  • 格式化JSON结构(可选,仅为提升可读性,不影响功能)

如果需要在JSON中使用Bash变量(比如动态替换邮箱地址),可以改用双引号包裹JSON并对内部双引号转义,或者用jq工具构造JSON来避免转义问题。

另外,你可以给curl命令添加-v参数,查看完整的请求和响应详情,方便进一步排查问题:

curl -v --request POST "$ADO_API" \
              --header "Authorization: Bearer $SYSTEM_ACCESSTOKEN" \
              --header "Accept: application/json" \
              --header "Content-Type: application/json" \
              --data '{...}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:53:38