使用C#调用EU区Mailgun REST 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
相关产品推荐
相关产品推荐

