forked from CITKParus/P8-ExchangeService
Merge pull request #7 from Dollerino/master
ЦИТК-758, ЦИТК-43 - Разрешение работы с SMTP без TLS и аутентификации, проверка корректности при формировании URL
This commit is contained in:
commit
bebe5d3b88
@ -77,10 +77,14 @@ let mail = {
|
|||||||
sHost: "smtp.mail.ru",
|
sHost: "smtp.mail.ru",
|
||||||
//Порт сервера SMTP
|
//Порт сервера SMTP
|
||||||
nPort: 465,
|
nPort: 465,
|
||||||
|
//Использовать безопасное соединение SMTP (true - использование TLS/SSL, false - использование только в случае наличия STARTTLS)
|
||||||
|
bSecure: true,
|
||||||
//Имя пользователя SMTP-сервера
|
//Имя пользователя SMTP-сервера
|
||||||
sUser: "appserver@citk-parus.ru",
|
sUser: "appserver@citk-parus.ru",
|
||||||
//Пароль пользователя SMTP-сервера
|
//Пароль пользователя SMTP-сервера
|
||||||
sPass: "",
|
sPass: "",
|
||||||
|
//Отображать ошибку о некорректном сертификате при проверке безопасности
|
||||||
|
bRejectUnauthorized: true,
|
||||||
//Наименование отправителя для исходящих сообщений
|
//Наименование отправителя для исходящих сообщений
|
||||||
sFrom: "'Сервис интеграции с WEB-API' <appserver@citk-parus.ru>"
|
sFrom: "'Сервис интеграции с WEB-API' <appserver@citk-parus.ru>"
|
||||||
};
|
};
|
||||||
|
@ -113,7 +113,7 @@ class Notifier extends EventEmitter {
|
|||||||
if (!message.bSent) {
|
if (!message.bSent) {
|
||||||
try {
|
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({
|
await sendMail({
|
||||||
mail: this.mail,
|
mail: this.mail,
|
||||||
|
@ -182,16 +182,24 @@ const sendMail = prms => {
|
|||||||
);
|
);
|
||||||
//Если структура объекта в норме
|
//Если структура объекта в норме
|
||||||
if (!sCheckResult) {
|
if (!sCheckResult) {
|
||||||
//Параметры подключения к SMTP-серверу
|
//Формируем параметры для подключения к SMTP
|
||||||
let transporter = nodemailer.createTransport({
|
let transpOptions = {
|
||||||
host: prms.mail.sHost,
|
host: prms.mail.sHost,
|
||||||
port: prms.mail.nPort,
|
port: prms.mail.nPort,
|
||||||
secure: prms.mail.nPort == 465,
|
secure: prms.mail.bSecure,
|
||||||
auth: {
|
tls: {
|
||||||
|
rejectUnauthorized: prms.mail.bRejectUnauthorized
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//Если есть информация о пользователе - добавляем
|
||||||
|
if (prms.mail.sUser) {
|
||||||
|
transpOptions.auth = {
|
||||||
user: prms.mail.sUser,
|
user: prms.mail.sUser,
|
||||||
pass: prms.mail.sPass
|
pass: prms.mail.sPass
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
//Настраиваем подключение к SMTP-серверу
|
||||||
|
let transporter = nodemailer.createTransport(transpOptions);
|
||||||
//Параметры отправляемого сообщения
|
//Параметры отправляемого сообщения
|
||||||
let mailOptions = {
|
let mailOptions = {
|
||||||
from: prms.mail.sFrom,
|
from: prms.mail.sFrom,
|
||||||
@ -230,8 +238,8 @@ const buildURL = prms => {
|
|||||||
let sCheckResult = validateObject(prms, prmsUtilsSchema.buildURL, "Параметры функции формирования URL");
|
let sCheckResult = validateObject(prms, prmsUtilsSchema.buildURL, "Параметры функции формирования URL");
|
||||||
//Если структура объекта в норме
|
//Если структура объекта в норме
|
||||||
if (!sCheckResult) {
|
if (!sCheckResult) {
|
||||||
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! КОНТРОЛЬ КОРРЕКТНОСТИ
|
//Формируем URL с учетом лишних "/"
|
||||||
return `${prms.sSrvRoot}/${prms.sFnURL}${prms.sQuery ? `?${prms.sQuery}` : ""}`;
|
return `${prms.sSrvRoot.replace(/\/+$/, '')}/${prms.sFnURL.replace(/^\/+/, '')}${prms.sQuery ? `?${prms.sQuery}` : ""}`;
|
||||||
} else {
|
} else {
|
||||||
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
|
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
|
||||||
}
|
}
|
||||||
|
@ -356,6 +356,15 @@ const mail = new Schema({
|
|||||||
required: path => `Не указан порт сервера SMTP (${path})`
|
required: path => `Не указан порт сервера SMTP (${path})`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
//Использовать безопасное соединение STMP
|
||||||
|
bSecure: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
message: {
|
||||||
|
type: path => `Использование безопасного соединения SMTP (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
|
||||||
|
required: path => `Не указано использование безопасного соединения SMTP (${path})`
|
||||||
|
}
|
||||||
|
},
|
||||||
//Имя пользователя SMTP-сервера
|
//Имя пользователя SMTP-сервера
|
||||||
sUser: {
|
sUser: {
|
||||||
type: String,
|
type: String,
|
||||||
@ -375,6 +384,15 @@ const mail = new Schema({
|
|||||||
required: path => `Не указан пароль пользователя SMTP-сервера (${path})`
|
required: path => `Не указан пароль пользователя SMTP-сервера (${path})`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
//Отображать ошибку о некорректном сертификате при проверке безопасности
|
||||||
|
bRejectUnauthorized: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
message: {
|
||||||
|
type: path => `Отображение ошибки о некорректном сертификате SMTP (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
|
||||||
|
required: path => `Не указано отображение ошибки о некорректном сертификате (${path})`
|
||||||
|
}
|
||||||
|
},
|
||||||
//Наименование отправителя для исходящих сообщений
|
//Наименование отправителя для исходящих сообщений
|
||||||
sFrom: {
|
sFrom: {
|
||||||
type: String,
|
type: String,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user