На 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 такое пояснение: "Проверьте настройки брандмауэра. Тайм-аут обычно возникает при попытке открыть соединение с портом, который защищен брандмауэром либо на сервере, либо на вашем компьютере." В таком случае как я должен настраивать брандмауэр на сервере?