ЦИТК-758 - Разрешение работы с SMTP без TLS и аутентификации

This commit is contained in:
Dollerino 2023-12-07 15:33:34 +03:00
parent 7221fe1721
commit cfbc440dc8
4 changed files with 36 additions and 6 deletions

View File

@ -77,10 +77,14 @@ let mail = {
sHost: "smtp.mail.ru",
//Порт сервера SMTP
nPort: 465,
//Использовать безопасное соединение SMTP (true - использование TLS/SSL, false - использование только в случае наличия STARTTLS)
bSecure: true,
//Имя пользователя SMTP-сервера
sUser: "appserver@citk-parus.ru",
//Пароль пользователя SMTP-сервера
sPass: "",
//Отображать ошибку о некорректном сертификате при проверке безопасности
bRejectUnauthorized: true,
//Наименование отправителя для исходящих сообщений
sFrom: "'Сервис интеграции с WEB-API' <appserver@citk-parus.ru>"
};

View File

@ -113,7 +113,7 @@ class Notifier extends EventEmitter {
if (!message.bSent) {
try {
//Если всё в порядке с настройками
if (this.mail.sHost && this.mail.nPort && this.mail.sUser && this.mail.sPass && this.mail.sFrom) {
if (this.mail.sHost && this.mail.nPort && this.mail.sFrom && this.mail.hasOwnProperty('bSecure') && this.mail.hasOwnProperty('bRejectUnauthorized')) {
//Отправляем
await sendMail({
mail: this.mail,

View File

@ -182,16 +182,24 @@ const sendMail = prms => {
);
//Если структура объекта в норме
if (!sCheckResult) {
//Параметры подключения к SMTP-серверу
let transporter = nodemailer.createTransport({
//Формируем параметры для подключения к SMTP
let transpOptions = {
host: prms.mail.sHost,
port: prms.mail.nPort,
secure: prms.mail.nPort == 465,
auth: {
secure: prms.mail.bSecure,
tls: {
rejectUnauthorized: prms.mail.bRejectUnauthorized
}
};
//Если есть информация о пользователе - добавляем
if (prms.mail.sUser) {
transpOptions.auth = {
user: prms.mail.sUser,
pass: prms.mail.sPass
}
});
}
//Настраиваем подключение к SMTP-серверу
let transporter = nodemailer.createTransport(transpOptions);
//Параметры отправляемого сообщения
let mailOptions = {
from: prms.mail.sFrom,

View File

@ -356,6 +356,15 @@ const mail = new Schema({
required: path => `Не указан порт сервера SMTP (${path})`
}
},
//Использовать безопасное соединение STMP
bSecure: {
type: Boolean,
required: false,
message: {
type: path => `Использование безопасного соединения SMTP (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
required: path => `Не указано использование безопасного соединения SMTP (${path})`
}
},
//Имя пользователя SMTP-сервера
sUser: {
type: String,
@ -375,6 +384,15 @@ const mail = new Schema({
required: path => `Не указан пароль пользователя SMTP-сервера (${path})`
}
},
//Отображать ошибку о некорректном сертификате при проверке безопасности
bRejectUnauthorized: {
type: Boolean,
required: false,
message: {
type: path => `Отображение ошибки о некорректном сертификате SMTP (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
required: path => `Не указано отображение ошибки о некорректном сертификате (${path})`
}
},
//Наименование отправителя для исходящих сообщений
sFrom: {
type: String,