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