使用带有NodeMailer包的Mailgun发送电子邮件

时间:2014-11-16 11:07:37

标签: node.js mailgun nodemailer

几天前,我意识到Google已经改变了gmail帐户的安全性,特别是因为可以从应用程序发送电子邮件。谷歌搜索了一段时间后,我无法找到它的解决方案。 所以,我使用了Mailgun。我创建了一个帐户并启用了商家验证功能。但是,我仍然无法发送电子邮件。我一直收到有关未找到请求的网址的错误消息。 我怀疑,由于我还没有设置域,它没有选择默认提供的mailgun域。有人可以告诉我如何使用来自NodeMailer的Mailgun测试发送电子邮件,指出mailgun提供的沙箱名称。

提前谢谢 何

3 个答案:

答案 0 :(得分:29)

我创建了Nodemailer transport for mailgun

这是它的工作原理。

使用npm install安装包,就像使用任何包一样,然后在空文件中安装:

var nodemailer = require('nodemailer');
var mg = require('nodemailer-mailgun-transport');

// This is your API key that you retrieve from www.mailgun.com/cp (free up to 10K monthly emails)
var auth = {
  auth: {
    api_key: 'key-1234123412341234',
    domain: 'sandbox3249234.mailgun.org'
  }
}

var nodemailerMailgun = nodemailer.createTransport(mg(auth));

nodemailerMailgun.sendMail({
  from: 'myemail@example.com',
  to: 'recipient@domain.com', // An array if you have multiple recipients.
  subject: 'Hey you, awesome!',
  text: 'Mailgun rocks, pow pow!',
}, function (err, info) {
  if (err) {
    console.log('Error: ' + err);
  }
  else {
    console.log('Response: ' + info);
  }
});

将您的API密钥替换为您的密钥并更改详细信息,您就可以开始使用了!

答案 1 :(得分:27)

var nodemailer = require('nodemailer');
// send mail with password confirmation
var transporter = nodemailer.createTransport( {
    service:  'Mailgun',
    auth: {
     user: 'postmaster@sandboxXXXXXXXXXXXXXXXX.mailgun.org',
     pass: 'XXXXXXXXXXXXXXXX'   
    }
});
var mailOpts = {
    from: 'office@yourdomain.com',
    to: 'user@gmail.com',
    subject: 'test subject',
    text : 'test message form mailgun',
    html : '<b>test message form mailgun</b>'
};
transporter.sendMail(mailOpts, function (err, response) {
    if (err) {
     //ret.message = "Mail error.";
    } else {
     //ret.message = "Mail send.";
    }
});

答案 2 :(得分:2)

当我将域添加到auth对象(不仅是api_key)时,它也很有用。像这样:

var auth = {
  auth: {
    api_key: 'key-12319312391',
    domain: 'sandbox3249234.mailgun.org'
  }
};