使用Mailgun时为何出现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
相关产品推荐
相关产品推荐

