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

使用Mailgun时为何出现Unauthorized(未授权)错误?

Mailgun 401 Unauthorized错误排查及解决

错误信息

[Error: Unauthorized] {
status: 401,
details: 'Forbidden',
type: 'MailgunAPIError'
}

可能的原因及解决步骤

  • 私钥格式错误:Mailgun私钥必须以key-开头,检查代码里的key值是否完整复制了控制台的私钥,确保没有遗漏或截断字符。
  • 多余的公钥参数:Mailgun JavaScript客户端后端调用时,不需要传入public_key参数,该参数仅用于前端场景。移除public_key字段,只保留username: 'api'和正确私钥即可。
  • 域名不匹配:确认mg.messages.create的第一个参数(沙箱域名)和控制台里的沙箱域名完全一致,包括所有字符与后缀。
  • 发件人权限/格式问题:沙箱模式下,发件人必须是mailgun@你的沙箱域名或控制台已验证的授权发件人,且建议格式为名称 <邮箱>,比如Excited User <mailgun@sandboxyyyyyyyy.mailgun.org>。
  • 收件人未验证:沙箱域名仅允许发送邮件到已在控制台添加并验证的测试收件邮箱,若使用test@example.com这类未验证邮箱,需先在控制台完成验证。

修正后的代码示例

const formData = require('form-data');
const Mailgun = require('mailgun.js');
const mailgun = new Mailgun(formData);
const mg = mailgun.client({
  username: 'api',
  key: 'key-xxxxxxxxxxxxxx' // 替换为你的完整私钥
});
mg.messages.create('sandboxyyyyyyyy.mailgun.org', {
  from: "Excited User <mailgun@sandboxyyyyyyyy.mailgun.org>",
  to: ["已验证的测试邮箱@xxx.com"],
  subject: "Hello",
  text: "Testing some Mailgun awesomness!",
  html: "<h1>Testing some Mailgun awesomness!</h1>"
})
.then(msg => console.log(msg))
.catch(err => console.log(err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:57:16