Nodemailer: приветствие не получено - PullRequest
0 голосов
/ 23 мая 2018

При попытке отправить электронную почту в Node с помощью Nodemailer (https://github.com/nodemailer/nodemailer), при вызове sendMail транспортера Nodemailer возникает ошибка Greeting never received при использовании вместе с тестовой учетной записью электронной почты Ethereal.

Я пытался использовать как "подход с обратным вызовом", так и подход "async / await", но в обоих сценариях возникает одна и та же ошибка. Оба примера в значительной степени прямо из рабочих примеров в документации по Nodemailer.Я упускаю что-то простое? :)

Вот код "обратного вызова", который выдает ошибку:

it('can send email with a dynamic test account', done => {
    nodemailer.createTestAccount((err, account) => {
        const transporter = nodemailer.createTransport({
            host: 'smtp.ethereal.email',
            port: 587,
            auth: {
                user: account.user, // generated ethereal user
                pass: account.pass // generated ethereal password
            }
        });

        const mailOptions = {
            from: '"Fred Foo ?" <foo@example.com>', // sender address
            to: 'bar@example.com, baz@example.com', // list of receivers
            subject: 'Hello ✔', // Subject line
            text: 'Hello world?', // plain text body
            html: '<b>Hello world?</b>' // html body
        };

        // send mail with defined transport object
        transporter.sendMail(mailOptions, (error, info) => {
            if (error) {
                return console.log(error);
            }
            console.log('Message sent: %s', info.messageId);
            console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
            // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
            // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...

            done();
        });
    });
}).timeout(10000);

А вот трассировка стека ошибки:

{ Error: Greeting never received
    at SMTPConnection._formatError (/Users/<username>/projects/personal/learning-tests/javascript/nodemailer/node_modules/nodemailer/lib/smtp-connection/index.js:606:19)
    at SMTPConnection._onError (/Users/<username>/projects/personal/learning-tests/javascript/nodemailer/node_modules/nodemailer/lib/smtp-connection/index.js:579:20)
    at Timeout._greetingTimeout.setTimeout (/Users/<username>/projects/personal/learning-tests/javascript/nodemailer/node_modules/nodemailer/lib/smtp-connection/index.js:520:22)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
    at Timer.listOnTimeout (timers.js:290:5) code: 'ETIMEDOUT', command: 'CONN' }

И некоторая дополнительная информация:

  • версия узла: 8.11.2
  • версия nodemailer: 4.6.4
  • операционная система: OSX version 10.12.6

Ответы [ 2 ]

0 голосов
/ 03 мая 2019
const transporter = nodemailer.createTransport({
  service: config.mail.service,
  port: 8000,
  auth: {
    user: config.mail.username,
    pass: config.mail.password
  }
});

module.exports = {

  activationsMail: function (req, data) {
    // setup email data with unicode symbols
    const link = 'http://' + req.headers.host + '/user/activate/' + data.verifyCode;
    console.log('CODE :', data.verifyCode);
    const mailOptions = {
      from: '"Ecommerce" <noreply@ecommerce.com>', // sender address
      to: req.body.email, // list of receivers
      subject: 'Please confirm your Email account', // Subject line
      html: '\n\n' + 'Please Click here to verify <a href=' + link + '> Click here</a>'
    };
    //console.log('PORT', req.headers.host);

    // send mail with defined transport object
    transporter.sendMail(mailOptions, function (error, info) {
      if (error) {
        console.log('Email Error', error);
      } else {
        // callback(true);
        console.log('Email sent: ' + info.response);
      }
    })
  };
0 голосов
/ 16 июля 2018
const transporter = nodemailer.createTransport({
  service: 'config.mail.service',
  port: 8000,
  auth: {
    user: 'config.mail.username',
    pass: 'config.mail.password'
  }
});

module.exports = {

  activationsMail: function (req) {
    // setup email data with unicode symbols
    const mailOptions = {
      from: '"Ecommerce" <noreply@ecommerce.com>', // sender address
      to: req.body.email, // list of receivers
      subject: 'Ecommerce Account Activate', // Subject line
      html: '<div>Please <a href="' + req.headers.host + 'user/activate/' + req.code + '" target="__new">click here</a> to active your account.</div>' // html body
    };
    console.log('PORT', req.headers.host);

    // send mail with defined transport object
    transporter.sendMail(mailOptions, function (error, info) {
      if (error) {
        console.log('Email Error', error);
      } else {
        console.log('Email sent: ' + info.response);
      }
    })
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...