Как исправить проблемы с настройками Nodemailer - PullRequest
1 голос
/ 01 февраля 2020

Я пытаюсь написать скрипт, который отправляет данные формы на электронную почту. Я пытаюсь использовать Express и Nodemailer с node js. Я только новичок и не могу понять, почему он останавливает авторизацию почты и отправляет письма

Мой код:

const express = require('express');
const bodyParser = require('body-parser');
const mailer = require('./nodemailer');

const app = express();

const PORT = 3001;
let user;

app.use(bodyParser.urlencoded({ extended: false }));
app.post('/index', (req, res) => {
  if (!req.body.name || !req.body.phone) return res.sendStatus(400);
  const message = {
    to: '*****2020@mail.ru',
    subject: 'Congratulations! You are successfully registred on our site',
    text: `<h2>Поздравляем, Вы успешно зарегистрировались на нашем сайте! Данное письмо не требует ответа.<h2>
    <ul>
            <li>login: ${req.body.name}</li>
            <li>password: ${req.body.phone}</li>
        </ul> `,
  };
  mailer(message);
  user = req.body;
  console.log(req.body);
  res.redirect('/index');
});

app.get('/index', (req, res) => {
  if (typeof user !== 'object') return res.sendFile(`${__dirname}/dist/index.html`);
  res.send(`Заявка принята!`);
  user = undefined;
});

app.listen(PORT, () => console.log(`server listening at http://localhost:${PORT}/index`));
const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport(
  {
    host: 'smtp.gmail.com',
    port: 587,
    secure: false, // true for 465, false for other ports
    auth: {

      user: '******', // 
      pass: '****', //
    },
  },
  {
    from: 'Mailer Test <****2020@mail.ru>',
  },
);

const mailer = message => {
  transporter.sendMail(message, (err, info) => {
    if (err) return console.log(err);
    console.log('Email sent: ', info);
  });
};

module.exports = mailer;

Когда я отправляю данные, они у меня в терминале , но когда я хочу отправить его на почту, я получаю сообщение об ошибке:

{ Error: self signed certificate in certificate chain
    at TLSSocket.onConnectSecure (_tls_wrap.js:1058:34)
    at TLSSocket.emit (events.js:198:13)
    at TLSSocket._finishInit (_tls_wrap.js:636:8) code: 'ESOCKET', command: 'CONN' }```

1 Ответ

0 голосов
/ 01 февраля 2020

Ниже код работает на моей стороне, и я использовал его для своего проекта.

var nodemailer = require('nodemailer');

var smtpTransport = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true, // use SSL
    auth: {
        user: EMAIL,
        pass: PASSOWRD
    }
});

var mailOptions = {
    from: `Web`,
    to: 'toEmail@gmail.com',
    subject: 'Password reset request',
    html: 'How are you'
};
smtpTransport.sendMail(mailOptions, function (err, info) {
    if (!err) console.log(err)
    console.log('Successfully Sent');
});

Окружающая среда (важно):
- версия узла: v13 .2.0
- ОС: Windows 10
- nodemailer: 1.11.0


Пожалуйста, проверьте вашу среду, в прошлом я сталкивался с вашей проблемой, но я изменил версию узла, поэтому я решил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...