Отправка электронной почты с помощью 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'
  }
};