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

使用C#调用EU区Mailgun REST API返回Unauthorized求助

解决Mailgun EU区API返回Unauthorized的排查方案

针对你遇到的调用EU区Mailgun API始终返回Unauthorized的问题,可按以下步骤排查:

  • 确认API密钥与区域匹配
    EU区Mailgun账号的API密钥是区域专属的,不能混用美国区的密钥调用EU接口。登录Mailgun后台,查看你的API密钥是否属于EU区域(在账号设置-API密钥页面,密钥旁会标注区域)。

  • 检查域名的区域归属
    你的sandbox域名必须归属EU区域才能使用EU接口。登录后台进入域名管理,确认该sandbox域名的区域设置为EU;如果是美国区域名,需迁移至EU区,或切换回美国区接口调用。

  • 验证Basic Auth配置正确性
    确保HttpBasicAuthenticator的第一个参数是"api",第二个参数是完整的API密钥,无空格、换行或截断。建议直接从Mailgun后台复制密钥,避免手动输入错误。

  • 修正RestSharp参数提交方式
    Mailgun的/messages接口要求表单格式提交参数,你当前使用的AddParameter默认会将参数添加到QueryString,而非Form表单,这可能导致接口无法正确识别请求,进而触发权限验证失败。修改参数添加方式:

    // 替换原AddParameter为AddFormParameter
    request.AddFormParameter("from", "Ecommerce sandbox Mail<postmaster@sandbox4706f89b4150439ebca3c380f3fa96d0.mailgun.org>");
    request.AddFormParameter("to", email);
    request.AddFormParameter("subject", "Email Verification Email"); // 注意原代码里的Vertfication拼写错误,建议修正
    request.AddFormParameter("text", body);
    

    同时,可直接将域名写入Resource,避免参数绑定问题:

    request.Resource = "sandbox4706f89b4150439ebca3c380f3fa96d0.mailgun.org/messages";
    // 移除原有的request.AddParameter("domain", ...)
    
  • 用curl命令排除代码框架问题
    执行以下curl命令测试接口,若同样返回Unauthorized,说明问题出在账号/密钥/域名的区域配置;若curl请求成功,则聚焦排查RestSharp的代码逻辑:

    curl -s --user 'api:02a4bca7b2e0c72e98841b20beef1585-69210cfc-a7bc0929' https://api.eu.mailgun.net/v3/sandbox4706f89b4150439ebca3c380f3fa96d0.mailgun.org/messages -F from='Ecommerce sandbox Mail <postmaster@sandbox4706f89b4150439ebca3c380f3fa96d0.mailgun.org>' -F to=你的测试邮箱 -F subject='Email Verification Email' -F text='测试验证内容'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:55:28