Отправка электронной почты с помощью Mailgun с пакетом NodeMailer
Несколько дней назад я понял, что Google изменил безопасность учетных записей gmail, особенно для возможности отправки писем из приложений. После того, как я искал много времени, я не смог найти решение.
Итак, я прибегал к использованию Mailgun. Я создал учетную запись и включил ее с проверкой бизнеса. Тем не менее, я по-прежнему не могу отправлять электронные письма. Я продолжаю получать ошибку о том, что запрашиваемый URL не найден.
Я подозреваю, что, поскольку я еще не создал домен, он не выбирает домен электронной почты, который он предоставил по умолчанию. Может ли кто-нибудь показать мне, как тестировать отправку писем с помощью Mailgun из NodeMailer, указывая имя песочницы, предоставленное mailgun.
спасибо заранее
Хосе
Ответы
Ответ 1
Я создал транспорт Nodemailer для почтового рассылки.
Вот как это работает.
Вы устанавливаете пакет с 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: '[email protected]',
to: '[email protected]', // 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 своим и измените детали, и вы готовы к работе!
Ответ 2
var nodemailer = require('nodemailer');
// send mail with password confirmation
var transporter = nodemailer.createTransport( {
service: 'Mailgun',
auth: {
user: '[email protected]',
pass: 'XXXXXXXXXXXXXXXX'
}
});
var mailOpts = {
from: '[email protected]',
to: '[email protected]',
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.";
}
});
Ответ 3
Это сработало, когда я добавил домен также к объекту auth (а не только к api_key). Вот так:
var auth = {
auth: {
api_key: 'key-12319312391',
domain: 'sandbox3249234.mailgun.org'
}
};