Azure DevOps SendMail API返回204但未收到邮件求助
排查Azure DevOps流水线Send Mail API返回204但无邮件的问题
1. 修正授权头的认证方式
你当前用Basic认证格式处理System_AccessToken,但System_AccessToken属于OAuth 2.0访问令牌,需改用Bearer认证方案。修改header代码:
$header = @{ "Accept" = "application/json" "Authorization" = "Bearer $token" }
原代码的Basic编码仅适用于个人访问令牌(PAT),不适用于流水线OAuth令牌,这可能导致API返回成功状态但实际未触发邮件发送。
2. 验证流水线令牌的权限
确保流水线对应的服务账户(通常是[组织名] Build Service ([项目名]))在项目中拥有发送邮件权限:
- 进入项目的项目设置→权限→项目级权限
- 找到对应Build Service账户
- 将“发送邮件”权限设置为允许
3. 调整收件人参数格式
请求体中同时指定tfsIds和emailAddresses可能引发冲突,尝试仅保留一种方式,比如只使用邮箱地址:
"to" : { "emailAddresses": ["HARD_CODED_MY_EMAIL"] }
确认收件邮箱是Azure DevOps组织内的已验证成员邮箱,该API仅支持发送给组织内有效用户。
4. 检查邮件拦截情况
- 查看收件邮箱的垃圾邮件、广告邮件文件夹,确认邮件未被归类
- 排查企业邮箱防火墙或过滤规则,是否拦截了Azure DevOps发送的邮件
5. 增加日志辅助排查
在代码中添加响应日志,获取更详细的API返回信息:
Write-Host "Response status code: $($response.StatusCode)" Write-Host "Response headers: $($response.Headers | Out-String)"
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

