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

调用Azure DevOps SendMail接口遇411及503错误求助

调用Azure DevOps SendMail API的问题排查与解决

问题描述

尝试调用Azure DevOps的SendMail接口时,遇到以下问题:

  1. 执行curl命令时提示URL格式错误,同时返回HTTP Error 411. 请求必须是分块传输或包含内容长度
  2. 请求被重定向到登录页面
  3. 添加Content-Length头后返回503服务不可用错误

原执行命令

endpoint=https://dev.azure.com/myorg/myproject/_apis/wit/sendmail?api-version=7.1-preview.1
body='{
"message": {
"body": "Test Body",
"cc": {},
"to": {
"tfsIds": ["my-tfsIds-id"]
},
"replyTo": {},
"subject": "Test Subject"
},
projectId:"my-project-id"
}'

curl -X POST "$endpoint" --data "$body" -H "Authorization: Basic $pat" -H "Content-Type: application/json" -vL

错误日志

411错误日志

Note: Unnecessary use of -X or --request, POST is already inferred.
* Closing connection -1
curl: (3) URL using bad/illegal format or missing URL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Length Required</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Length Required</h2>
<hr><p>HTTP Error 411. 请求必须是分块传输或包含内容长度。</p>
</BODY></HTML>

重定向日志

* Connection #0 to host dev.azure.com left intact
* Issue another request to this URL: 'https://xxxxx.vssps.visualstudio.com/_signin?realm=dev.azure.com&reply_to=https%3A%2F%2Fdev.azure.com%2FMYORG%2FMYPRODJECT%2F_apis%2Fwit%2Fsendmail%3Fapi-version%3D7.1-preview.1&redirect=xxxxxxxxxxxxxxxxx'
* Switch from POST to GET
*   Trying xx.xxx.xx.xx:443...
* Connected to xxxxx.vssps.visualstudio.com (xx.xxx.xx.xx:443) port 443 (#1)

503错误提示

抱歉!我们的服务目前不可用。
我们正在尽快恢复所有服务,请稍后重试。
如需查看服务最新状态,请访问我们的支持页面。


问题解决

1. 修复URL格式与411错误

核心问题为JSON语法错误、curl参数使用不当:

  • JSON语法修正:原body中的projectId键未用双引号包裹,不符合JSON规范,会导致请求体解析失败。
  • curl参数调整:使用--data-raw替代--data,避免shell解析请求体中的特殊字符;同时确保PAT已正确编码。

修正后的命令示例:

# 正确编码PAT(注意前面的冒号不可省略)
pat_base64=$(echo -n ":${your_pat}" | base64)

endpoint="https://dev.azure.com/myorg/myproject/_apis/wit/sendmail?api-version=7.1-preview.1"
# 修正JSON格式,所有键用双引号包裹
body='{
  "message": {
    "body": "Test Body",
    "cc": {},
    "to": {
      "tfsIds": ["my-tfsIds-id"]
    },
    "replyTo": {},
    "subject": "Test Subject"
  },
  "projectId": "my-project-id"
}'

# 执行请求,无需手动添加Content-Length,curl会自动处理
curl -vL "$endpoint" --data-raw "$body" -H "Authorization: Basic $pat_base64" -H "Content-Type: application/json"

2. 解决重定向到登录页面的问题

重定向是因为认证失败,需检查以下几点:

  • PAT权限:确保PAT拥有**工作项(Work Items)**的读写权限,且作用域包含目标组织。
  • 路径正确性:确认URL中的组织名myorg、项目名myproject拼写完全正确(Azure DevOps路径区分大小写)。
  • PAT编码:必须用echo -n ":$PAT" | base64生成编码,不能遗漏前面的冒号,也不能包含多余换行符。

3. 处理503服务不可用错误

503是Azure DevOps服务端临时故障,与你的请求无关,可按以下方式处理:

  • 检查Azure DevOps官方服务状态,确认是否有全局或区域故障。
  • 等待10-15分钟后重试请求。
  • 确保之前的请求错误(如JSON格式、认证问题)已全部修复,避免因无效请求触发的间接报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:15:36