@ArtGMlg

Почему nodemailer отправляет письма только с localhost?

На node.js express сервере имею рутер, который отвечает за отправку электронных писем при регистрации пользователя на сайте.
Рутер:
var express = require('express');
var router = express.Router();
var fs = require('fs');
const nodemailer = require('nodemailer');

router.post('/send/confirmMail', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.contentType('json');
  res.setHeader('Content-Type', 'application/json');

  var transporter = nodemailer.createTransport({
    host: "smtp.mail.ru",
    secureConnection: true,
    port: 465,
    auth: {
      user: /*имя пользователя*/,
      pass: /*пароль*/
    },
    tls: {
        // do not fail on invalid certs
        rejectUnauthorized: false
    }
  });

  transporter.sendMail({
    from: 'no_reply@mydomail.net',
    to: req.body.email,
    subject: 'Подтверждение e-mail адреса.',
    html: /*html-письмо*/
  }, (error, info) => {
    if (error) {
      res.status(500).send(JSON.stringify({err: error, inf: info}));
      return console.log(error);
    } else {
      res.status(200).end();
    }
  });

});

module.exports = router;


Когда таким образом я отправляю письмо с localhost, всё работает. Однако при отправке письма, когда приложение запущено на хостинге, в ответ прилетает вот такая ошибка:
address: "217.69.139.160"
code: "ESOCKET"
command: "CONN"
errno: "ETIMEDOUT"
port: 465
syscall: "connect"


На гите nodemailer такое пояснение: "Проверьте настройки брандмауэра. Тайм-аут обычно возникает при попытке открыть соединение с портом, который защищен брандмауэром либо на сервере, либо на вашем компьютере." В таком случае как я должен настраивать брандмауэр на сервере?
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы