MailGun导致401禁止使用nodeJ



我正在尝试使用mailgun和nodejs发送电子邮件。我接受了MailGun提供给你的代码,并添加了我的域名和api密钥:

const mailgun = require('mailgun-js');
const DOMAIN = 'mail.mywebsite.com';
const mg = mailgun({apiKey: "this-is-myApiKey", domain: DOMAIN});
const data = {
from: 'Support <support@mywebsite.com>',
to: 'myemail@gmail.com',
subject: 'Hello',
text: 'Testing some Mailgun awesomness!'
};
mg.messages().send(data, function (error, body) {
console.log(1, error);
console.log(2, body);
});

这导致401被禁止,但如果我更改为我的沙箱域名,那么它就起作用了。有人有一些有用的技巧来解决这个问题吗?

mail.mywebsite.com = domain name set under sending domains
this-is-myApiKey = my private api key found here: https://app.mailgun.com/app/account/security/api_keys

这可能是由于mailgun的域名不正确。请确保您使用的是正确的apikey和域名。

可能是您的域名问题。

const mailgun = require("mailgun-js")({
apiKey: 'your_api_key',
domain: 'mg.yourDomainName.com'
});
const data = {
from: "no-reply@yourDomainName.com",
to: 'abcd@gmail.com',
subject: 'Hello',
text: 'Testing some Mailgun awesomeness!'
};
mailgun.messages().send(data, (error, body) => {
console.log(body);
if(!error) 
res.status(200).json({
message:"mail sent"
})
});

这是因为在新的mailgun api v3中,您必须遵循不同的方法:

请参阅下面的示例代码:

var formData = require('form-data');
const Mailgun = require('mailgun.js');
const mailgun = new Mailgun(formData);
const mg      = mailgun.client({
username: 'api', 
key: process.env.EMAIL_MAILGUN_API_KEY
}); 

mg.messages.create(process.env.EMAIL_MAILGUN_HOST, {
from: "sender na,e <"+process.env.EMAIL_FROM+">",
to: ["dan@dominic.com"],
subject: "Verify Your Email",
text: "Testing some Mailgun awesomness!",
html: "<h1>"+req+"</h1>"
})
.then(msg => {
console.log(msg);
res.send(msg);
}) // logs response data
.catch(err => { 
console.log(err);
res.send(err);
}); // logs any error

请确保使用您验证的DNS名称。我试图使用我的域名(正如他们文档中的所有内容所指示的那样(,并多次面临HTTP401错误。一旦我将DOMAIN_NAME更改为VERIFIED_DNS_NAME,它就起作用了。

例如,我的域是blahblah.com。然而,我验证的DNS名称是mg.blahblah.com。当我更改我的客户端以使用经过验证的DNS名称时,一切都正常

最新更新