【问题标题】:MailGun results in 401 forbidden using nodeJsMailGun 导致 401 禁止使用 nodeJs
【发布时间】:2021-11-10 22:29:26
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • 如果您在欧盟,请添加host : "api.eu.mailgun.net"。我有同样的问题,我遇到了你的问题,但我看到你没有添加欧盟主机,也许这就是问题

标签: node.js mailgun


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    可能是您的域名问题。

    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"
            })
    });
    

    【讨论】:

      【解决方案3】:

      这是因为在新的 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
      

      【讨论】:

        猜你喜欢
        • 2020-12-08
        • 2015-08-30
        • 2018-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-30
        • 2012-12-24
        相关资源
        最近更新 更多