Мастер-Тур(15):MailService — различия между версиями
[досмотренная версия] | [досмотренная версия] |
Biryukov (обсуждение | вклад) |
Biryukov (обсуждение | вклад) (→Установка службы MailService) |
||
(не показано 13 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
==Введение== | ==Введение== | ||
− | MailService – это | + | MailService – это служба для отправки email-уведомлений и сообщений, формируемых в процессе бронирования туров. Сервис поддерживает очередь отправки, работу с шаблонами, исключение повторной отправки на одинаковые адреса, логирование и приоритетное использование пользовательских шаблонов с суффиксом _custom. |
==Установка службы MailService== | ==Установка службы MailService== | ||
− | |||
− | |||
− | |||
− | |||
− | + | *Скопировать папку ''MailService'' из дистрибутива на сервер приложений. | |
+ | |||
+ | *Указать настройки ''MailServiceUrl'' – адрес сервиса отправки сообщений в '''Megateс.TourSearchOwin.exe.config''' службы [[Мастер-Тур(15):Установка#Установка службы поиска|'''TourSearchOwin''']]. При заполнении данной настройки – письма через Мастер-Web больше не отправляются. За отправку начинает отвечать служба MailService. | ||
+ | |||
+ | *Включить ''MailServiceLogger'' – логгер отправки сообщений в '''Megateс.TourSearchOwin.exe.config''' службы [[Мастер-Тур(15):Установка#Установка службы поиска|'''TourSearchOwin''']] | ||
+ | |||
+ | *Перед установкой необходимо настроить конфигурационный файл ''appsettings.json''. | ||
+ | |||
+ | ==Настройка службы MailService== | ||
В разделе ''Install'' конфигурационного файла задаются параметры установки и адреса службы '''MailService'''. | В разделе ''Install'' конфигурационного файла задаются параметры установки и адреса службы '''MailService'''. | ||
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" width="800px" | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" width="800px" | ||
− | |||
|- style="background-color:#F2F2F2" | |- style="background-color:#F2F2F2" | ||
+ | ! № | ||
+ | ! Описание | ||
+ | ! Настройка | ||
− | + | |- style="vertical-align:text-middle" | |
− | + | | 1 | |
− | + | | Название службы (по умолчанию — MegatecMailService) | |
− | |- style="vertical-align:text- | + | | <syntaxhighlight lang="json" enclose="div"> |
− | + | "ServiceName": "MegatecMailService" | |
− | | | ||
− | | <syntaxhighlight lang="json" enclose="div"> | ||
− | "ServiceName": "MegatecMailService" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 2 | |
− | | | + | | Путь к службе MailService. Используется порт 7705 (рекомендуется). |
− | | <syntaxhighlight lang="json" enclose="div"> | + | <font style="color:red">''Внимание!''</font><br /> |
− | "ServiceAddress": [ "http://localhost:7705" ] | + | При смене порта нужно изменить его и в _Install.bat. |
+ | | <syntaxhighlight lang="json" enclose="div"> | ||
+ | "ServiceAddress": [ "http://localhost:7705" ] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |- style="vertical-align:text-middle" | ||
+ | | 3 | ||
+ | | IP-адрес, на котором будет работать MailService. | ||
− | + | *IPAddress.IPv6Any — слушать все доступные IPv6-интерфейсы. | |
+ | *IPAddress.Any — слушать все IPv4-интерфейсы. | ||
+ | *Также можно задать конкретный IP-адрес сервера. | ||
+ | <font style="color:red">''Важно:''</font> Указание IPAddress.IPv6Any позволяет принимать запросы на всех интерфейсах по протоколу IPv6. Для IPv4 рекомендуется использовать IPAddress.Any или конкретный IP. | ||
+ | | <syntaxhighlight lang="json" enclose="div"> | ||
+ | "IPAddress": "IPAddress.IPv6Any" | ||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | |- style="vertical-align:text-middle" | |
− | |- style="vertical-align:text- | + | | 4 |
− | + | | Список разрешённых хостов, с которых можно обращаться к MailService. | |
− | | | + | * "*" — разрешены все хосты (небезопасно для продакшена). |
+ | * Укажите конкретные имена хостов или домены, если необходимо ограничить доступ. | ||
+ | Пример: ["https://partner.tour.com", "https://office.megatec.ru"] | ||
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
− | + | "AllowedHosts": "*" | |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
|} | |} | ||
− | Пример конфигурации | + | Пример конфигурации: |
− | + | <syntaxhighlight lang="json" enclose="div"> | |
− | <syntaxhighlight lang="json" enclose="div"> | + | { |
− | { | + | "Install": { |
− | + | "ServiceName": "MegatecMailService", | |
− | + | "ServiceAddress": [ "http://localhost:7705" ], | |
− | + | "IPAddress": "IPAddress.IPv6Any" | |
− | + | }, | |
− | + | "AllowedHosts": "*" | |
− | + | } | |
− | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
[[Файл:Am 063.png|Внимание]] | [[Файл:Am 063.png|Внимание]] | ||
− | Убедитесь, что | + | Убедитесь, что IP-адрес и доступ к службе ограничены только необходимыми хостами. |
+ | ===Настройка отправки e-mail сообщений через MailService=== | ||
− | + | Из системы отправляются следующие сообщения: | |
− | |||
− | Из системы | ||
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" width="600px" | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" width="600px" | ||
− | |||
|- style="background-color:#F2F2F2" | |- style="background-color:#F2F2F2" | ||
+ | ! № | ||
+ | ! Сообщение | ||
+ | ! Получатели | ||
− | + | |- style="vertical-align:text-middle" | |
− | |||
− | |||
− | |||
− | |- style="vertical-align:text- | ||
− | |||
| 1 | | 1 | ||
− | | | + | | Сообщение о новой заявке от агента |
− | | Администратор системы | + | | |
− | + | *Ведущий менеджер по путевке | |
− | + | *Администратор системы | |
+ | *Дополнительный e-mail для агента (AddRcptToAgent) | ||
+ | *E-mail по [[Мастер-Тур(15):Страны|стране]] | ||
+ | |- style="vertical-align:text-middle" | ||
| 2 | | 2 | ||
− | | | + | | Сообщение о новой заявке от частного лица |
− | | Администратор системы | + | | |
− | + | * Ведущий менеджер по путевке | |
− | + | * Администратор системы | |
− | + | * Дополнительный e-mail для частного лица (AddRcptToPerson) | |
− | + | * E-mail по [[Мастер-Тур(15):Страны|стране]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | |||
|} | |} | ||
− | + | ===Настройки почты в конфигурации=== | |
− | |||
− | |||
− | |||
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" width="800px" | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" width="800px" | ||
− | |||
|- style="background-color:#F2F2F2" | |- style="background-color:#F2F2F2" | ||
+ | ! № | ||
+ | ! Описание | ||
+ | ! Настройка | ||
− | + | |- style="vertical-align:text-middle" | |
− | + | | 1 | |
− | + | | Адрес, с которого отправляются письма из системы бронирования, обязателен для заполнения | |
− | |- style="vertical-align:text- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | Адрес, с которого отправляются письма | ||
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
− | "MailFrom": "primer@ | + | "MailFrom": "primer@mail.com" |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 2 | |
− | | | + | | Адрес администратора системы (можно добавить несколько адресов через « ; »), обязателен для заполнения |
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
− | "RcptTo": " | + | "RcptTo": "admin@mail.com" |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 3 | |
− | | Дополнительные e-mail адреса | + | | Дополнительные e-mail адреса для получения сообщения о новой заявке от агентов (можно добавить несколько e-mail адресов через « ; ») |
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
− | " | + | "AddRcptToAgent": "agent1@mail.com;agent2@mail.com" |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 4 | |
− | | e-mail адреса для | + | | Дополнительные e-mail адреса для получения сообщения о новой заявке от частного лица (можно добавить несколько e-mail адресов через « ; ») |
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
− | " | + | "AddRcptToPerson": "client1@mail.com;client2@mail.com" |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 5 | |
− | | | + | | Почта для отправки отчетов об ошибках, возникающих при работе системы (можно добавить несколько почтовых ящиков через « ; ») |
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
− | " | + | "AdminEmail": "errors@mail.com" |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 6 | |
− | + | | Почтовый сервер SMTP, обязателен для заполнения | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | |||
− | | | ||
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
− | " | + | "SmtpServer": "smtp.mail.com" |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 7 | |
− | + | | SMTP порт почтового сервера (по умолчанию — 25), обязателен для заполнения | |
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | |||
− | | SMTP порт | ||
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
"SmtpPort": 587 | "SmtpPort": 587 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 8 | |
− | | Тип авторизации | + | | Тип авторизации на сервере: None, Base64 или TLS/SSL, обязателен для заполнения |
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
"Authentication": "TLS/SSL" | "Authentication": "TLS/SSL" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 9 | |
− | | Имя пользователя | + | | Имя пользователя для подключения к почтовому серверу, обязателен для заполнения |
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
− | "SmtpUser": "primer@ | + | "SmtpUser": "primer@mail.com" |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 10 | |
− | | Пароль пользователя | + | | Пароль пользователя почтового сервера, обязателен для заполнения |
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
"SmtpPassword": "••••••••" | "SmtpPassword": "••••••••" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |- style="vertical-align:text- | + | |- style="vertical-align:text-middle" |
− | + | | 11 | |
− | | | + | | Активация протокола SSL (Нужно включить при использовании TLS/SSL авторизации.) |
| <syntaxhighlight lang="json" enclose="div"> | | <syntaxhighlight lang="json" enclose="div"> | ||
"EnableSSL": true | "EnableSSL": true | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
|} | |} | ||
+ | [[Файл:Am 063.png|left|Внимание]] | ||
+ | Все email-адреса, полученные из разных источников, сравниваются. Повторные email исключаются: если один и тот же адрес указан несколько раз, письмо отправляется только один раз.<br /><br /> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Пример почтовых настроек appsettings.json для использования почты '''Yandex''', если почта со своим доменным именем на yandex. | Пример почтовых настроек appsettings.json для использования почты '''Yandex''', если почта со своим доменным именем на yandex. | ||
Строка 345: | Строка 202: | ||
"Authentication": "TLS/SSL", | "Authentication": "TLS/SSL", | ||
"SmtpUser": "primer@yandex.ru", | "SmtpUser": "primer@yandex.ru", | ||
− | "SmtpPassword": "Pa$$w0rd", | + | "SmtpPassword": "Pa$$w0rd", |
− | |||
"EnableSSL": true | "EnableSSL": true | ||
} | } | ||
Строка 361: | Строка 217: | ||
"Authentication": "TLS/SSL", | "Authentication": "TLS/SSL", | ||
"SmtpUser": "primer", | "SmtpUser": "primer", | ||
− | "SmtpPassword": "Pa$$w0rd", | + | "SmtpPassword": "Pa$$w0rd", |
− | |||
"EnableSSL": true | "EnableSSL": true | ||
} | } | ||
Строка 378: | Строка 233: | ||
"Authentication": "TLS/SSL", | "Authentication": "TLS/SSL", | ||
"SmtpUser": "primer@mail.ru", | "SmtpUser": "primer@mail.ru", | ||
− | "SmtpPassword": "Pa$$w0rd", | + | "SmtpPassword": "Pa$$w0rd", |
− | |||
"EnableSSL": true | "EnableSSL": true | ||
} | } | ||
Строка 387: | Строка 241: | ||
Для корректной работы сервиса необходимо убедиться, что доступ к конфигурационному файлу ограничен.<br /> | Для корректной работы сервиса необходимо убедиться, что доступ к конфигурационному файлу ограничен.<br /> | ||
+ | ==Работа с шаблонами писем== | ||
+ | MailService использует шаблоны для формирования текста email-сообщений. Все используемые шаблоны описываются в конфигурационном файле ''templates.xml''. В этом файле задаются: | ||
+ | |||
+ | * '''class''' – логический идентификатор шаблона, используемый в коде, | ||
+ | * '''name''' – имя файла шаблона (например, ''annulateReport.xml''), | ||
+ | * '''format''' – формат содержимого (''plain-text'', ''html'' и т.д.). | ||
+ | |||
+ | Пример структуры файла '''templates.xml''': | ||
+ | |||
+ | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <?xml version="1.0" encoding="utf-8" ?> | ||
+ | <templates> | ||
+ | <template> | ||
+ | <class>annulateReport</class> | ||
+ | <name>annulateReport.xml</name> | ||
+ | <format>plain-text</format> | ||
+ | </template> | ||
+ | <template> | ||
+ | <class>manager order report</class> | ||
+ | <name>manager order report_html.xml</name> | ||
+ | <format>plain-text</format> | ||
+ | </template> | ||
+ | ... | ||
+ | </templates> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Поддержка пользовательских шаблонов=== | ||
+ | |||
+ | Если в каталоге с шаблонами присутствует файл '''templates_custom.xml''', то именно он используется вместо стандартного '''templates.xml'''. | ||
+ | |||
+ | Это позволяет настраивать список и поведение шаблонов без изменения стандартной сборки. При наличии файла '''templates_custom.xml''': | ||
+ | |||
+ | * Файл '''templates.xml''' игнорируется. | ||
+ | * Пользователь может переопределить любые шаблоны (по классам, именам файлов, форматам). | ||
+ | |||
+ | ;Используемые шаблоны | ||
+ | |||
+ | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse\:collapse" width="800px" | ||
+ | |- style="background-color:#F2F2F2" | ||
+ | ! Шаблон | ||
+ | ! Назначение письма | ||
+ | |||
+ | |||
+ | |- style="vertical-align\:text-middle" | ||
+ | | manager order report.xml / manager order report_html.xml | ||
+ | | Новая заявка от агентства (для агента и менеджера) | ||
+ | |||
+ | |- style="vertical-align\:text-middle" | ||
+ | | personal order report.xml | ||
+ | | Новая заявка от частного лица (для агента и менеджера) | ||
+ | |||
+ | |} | ||
+ | <br /> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример новой заявки от агенства | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
+ | [[Файл:Ag 334.png]] | ||
+ | |||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ==Установка и удаление службы== | ||
* Установка осуществляется запуском скрипта ''_Install.bat'' от имени администратора. [[Файл:Bm135.png|Запуск от имени администратора]] | * Установка осуществляется запуском скрипта ''_Install.bat'' от имени администратора. [[Файл:Bm135.png|Запуск от имени администратора]] | ||
− | * При установке в Брандмауэре Windows создаются правила для входящих подключений для открытия порта службы | + | * При установке в Брандмауэре Windows создаются правила для входящих подключений для открытия порта службы MailService (например TCP 7705 и UDP 7705) |
* В Службах Windows добавляется служба ''MegatecMailService''.<br /> | * В Службах Windows добавляется служба ''MegatecMailService''.<br /> | ||
[[Файл:Ag 207.png|MegatecMailService]]<br /> | [[Файл:Ag 207.png|MegatecMailService]]<br /> | ||
* Для удаления службы кэширования необходимо запустить скрипт ''_UnInstall.bat'' от имени администратора. При этом будут удалены правила для входящих подключений. | * Для удаления службы кэширования необходимо запустить скрипт ''_UnInstall.bat'' от имени администратора. При этом будут удалены правила для входящих подключений. | ||
+ | ;Настройка логирования | ||
+ | |||
+ | MailService поддерживает логирование событий и ошибок в консоль и/или файл. Все параметры задаются в конфигурационном файле '''appsettings.json''', в секции '''"Logger"'''. | ||
+ | |||
+ | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse\:collapse" width="800px" | ||
+ | |- style="background-color:#F2F2F2" | ||
+ | ! № | ||
+ | ! Описание | ||
+ | ! Настройка | ||
+ | |||
+ | |- style="vertical-align\:text-middle" | ||
+ | | 1 | ||
+ | | Включить логирование в консоль | ||
+ | |||
+ | * '''true''' – логирование в консоль активно | ||
+ | * '''false''' – логирование в консоль отключено | ||
+ | | <syntaxhighlight lang="json" enclose="div"> | ||
+ | "EnableConsole": true | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align\:text-middle" | ||
+ | | 2 | ||
+ | | Путь к файлу логов. | ||
+ | Если путь не указан (пустая строка), лог-файл не создается. | ||
+ | | <syntaxhighlight lang="json" enclose="div"> | ||
+ | "FilePath": "" </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align\:text-middle" | ||
+ | | 3 | ||
+ | | Максимальный размер лог-файла в мегабайтах. | ||
+ | При достижении лимита файл архивируется, и создается новый. | ||
+ | | <syntaxhighlight lang="json" enclose="div"> | ||
+ | "MaxLogFileSize": 10 </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align\:text-middle" | ||
+ | | 4 | ||
+ | | Количество хранимых старых лог-файлов. | ||
+ | Старые архивы удаляются при превышении лимита. | ||
+ | | <syntaxhighlight lang="json" enclose="div"> | ||
+ | "MaxOldLogFilesCount": 30 </syntaxhighlight> | ||
+ | |} | ||
+ | |||
+ | Пример секции '''"Logger"''' в '''appsettings.json''': | ||
+ | |||
+ | <syntaxhighlight lang="json" enclose="div"> | ||
+ | "Logger": { | ||
+ | "EnableConsole": true, | ||
+ | "FilePath": "C:\\Logs\\mailservice.log", | ||
+ | "MaxLogFileSize": 10, | ||
+ | "MaxOldLogFilesCount": 30 | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <font style="color:red">'''Важно!'''</font> При запуске службы, если обязательные параметры конфигурации отсутствуют или некорректны, ошибки выводятся в лог и консоль (при активном логировании). |
Текущая версия на 13:26, 11 августа 2025
Содержание
[убрать]Введение
MailService – это служба для отправки email-уведомлений и сообщений, формируемых в процессе бронирования туров. Сервис поддерживает очередь отправки, работу с шаблонами, исключение повторной отправки на одинаковые адреса, логирование и приоритетное использование пользовательских шаблонов с суффиксом _custom.
Установка службы MailService
- Скопировать папку MailService из дистрибутива на сервер приложений.
- Указать настройки MailServiceUrl – адрес сервиса отправки сообщений в Megateс.TourSearchOwin.exe.config службы TourSearchOwin. При заполнении данной настройки – письма через Мастер-Web больше не отправляются. За отправку начинает отвечать служба MailService.
- Включить MailServiceLogger – логгер отправки сообщений в Megateс.TourSearchOwin.exe.config службы TourSearchOwin
- Перед установкой необходимо настроить конфигурационный файл appsettings.json.
Настройка службы MailService
В разделе Install конфигурационного файла задаются параметры установки и адреса службы MailService.
№ | Описание | Настройка |
---|---|---|
1 | Название службы (по умолчанию — MegatecMailService) | "ServiceName": "MegatecMailService"
|
2 | Путь к службе MailService. Используется порт 7705 (рекомендуется).
Внимание! |
"ServiceAddress": [ "http://localhost:7705" ]
|
3 | IP-адрес, на котором будет работать MailService.
Важно: Указание IPAddress.IPv6Any позволяет принимать запросы на всех интерфейсах по протоколу IPv6. Для IPv4 рекомендуется использовать IPAddress.Any или конкретный IP. |
"IPAddress": "IPAddress.IPv6Any"
|
4 | Список разрешённых хостов, с которых можно обращаться к MailService.
Пример: ["https://partner.tour.com", "https://office.megatec.ru"] |
"AllowedHosts": "*"
|
Пример конфигурации:
{
"Install": {
"ServiceName": "MegatecMailService",
"ServiceAddress": [ "http://localhost:7705" ],
"IPAddress": "IPAddress.IPv6Any"
},
"AllowedHosts": "*"
}
Убедитесь, что IP-адрес и доступ к службе ограничены только необходимыми хостами.
Настройка отправки e-mail сообщений через MailService
Из системы отправляются следующие сообщения:
№ | Сообщение | Получатели |
---|---|---|
1 | Сообщение о новой заявке от агента |
|
2 | Сообщение о новой заявке от частного лица |
|
Настройки почты в конфигурации
№ | Описание | Настройка |
---|---|---|
1 | Адрес, с которого отправляются письма из системы бронирования, обязателен для заполнения | "MailFrom": "primer@mail.com"
|
2 | Адрес администратора системы (можно добавить несколько адресов через « ; »), обязателен для заполнения | "RcptTo": "admin@mail.com"
|
3 | Дополнительные e-mail адреса для получения сообщения о новой заявке от агентов (можно добавить несколько e-mail адресов через « ; ») | "AddRcptToAgent": "agent1@mail.com;agent2@mail.com"
|
4 | Дополнительные e-mail адреса для получения сообщения о новой заявке от частного лица (можно добавить несколько e-mail адресов через « ; ») | "AddRcptToPerson": "client1@mail.com;client2@mail.com"
|
5 | Почта для отправки отчетов об ошибках, возникающих при работе системы (можно добавить несколько почтовых ящиков через « ; ») | "AdminEmail": "errors@mail.com"
|
6 | Почтовый сервер SMTP, обязателен для заполнения | "SmtpServer": "smtp.mail.com"
|
7 | SMTP порт почтового сервера (по умолчанию — 25), обязателен для заполнения | "SmtpPort": 587
|
8 | Тип авторизации на сервере: None, Base64 или TLS/SSL, обязателен для заполнения | "Authentication": "TLS/SSL"
|
9 | Имя пользователя для подключения к почтовому серверу, обязателен для заполнения | "SmtpUser": "primer@mail.com"
|
10 | Пароль пользователя почтового сервера, обязателен для заполнения | "SmtpPassword": "••••••••"
|
11 | Активация протокола SSL (Нужно включить при использовании TLS/SSL авторизации.) | "EnableSSL": true
|
Все email-адреса, полученные из разных источников, сравниваются. Повторные email исключаются: если один и тот же адрес указан несколько раз, письмо отправляется только один раз.
Пример почтовых настроек appsettings.json для использования почты Yandex, если почта со своим доменным именем на yandex.
MailFrom и smtpUser должны совпадать, smtpPort="587".
{
"MailFrom": "primer@yandex.ru",
"SmtpServer": "smtp.yandex.ru",
"SmtpPort": 587, //or 587
"Authentication": "TLS/SSL",
"SmtpUser": "primer@yandex.ru",
"SmtpPassword": "Pa$$w0rd",
"EnableSSL": true
}
Пример почтовых настроек appsettings.json для использования почты Yandex, если почта на уandex без своего домена.
В качестве smtpUser берется имя пользователя из mailFrom без @yandex.ru, smtpPort="587".
{
"MailFrom": "primer@yandex.ru",
"SmtpServer": "smtp.yandex.ru",
"SmtpPort": 587, //or 587
"Authentication": "TLS/SSL",
"SmtpUser": "primer",
"SmtpPassword": "Pa$$w0rd",
"EnableSSL": true
}
Пример почтовых настроек appsettings.json для использования почты Mail.ru.
{
"MailFrom": "primer@mail.ru",
"SmtpServer": "smtp.mail.ru",
"SmtpPort": 587, //or 587
"Authentication": "TLS/SSL",
"SmtpUser": "primer@mail.ru",
"SmtpPassword": "Pa$$w0rd",
"EnableSSL": true
}
Для корректной работы сервиса необходимо убедиться, что доступ к конфигурационному файлу ограничен.
Работа с шаблонами писем
MailService использует шаблоны для формирования текста email-сообщений. Все используемые шаблоны описываются в конфигурационном файле templates.xml. В этом файле задаются:
- class – логический идентификатор шаблона, используемый в коде,
- name – имя файла шаблона (например, annulateReport.xml),
- format – формат содержимого (plain-text, html и т.д.).
Пример структуры файла templates.xml:
<?xml version="1.0" encoding="utf-8" ?>
<templates>
<template>
<class>annulateReport</class>
<name>annulateReport.xml</name>
<format>plain-text</format>
</template>
<template>
<class>manager order report</class>
<name>manager order report_html.xml</name>
<format>plain-text</format>
</template>
...
</templates>
Поддержка пользовательских шаблонов
Если в каталоге с шаблонами присутствует файл templates_custom.xml, то именно он используется вместо стандартного templates.xml.
Это позволяет настраивать список и поведение шаблонов без изменения стандартной сборки. При наличии файла templates_custom.xml:
- Файл templates.xml игнорируется.
- Пользователь может переопределить любые шаблоны (по классам, именам файлов, форматам).
- Используемые шаблоны
Шаблон | Назначение письма
|
---|---|
manager order report.xml / manager order report_html.xml | Новая заявка от агентства (для агента и менеджера) |
personal order report.xml | Новая заявка от частного лица (для агента и менеджера) |
Установка и удаление службы
- Установка осуществляется запуском скрипта _Install.bat от имени администратора.
- При установке в Брандмауэре Windows создаются правила для входящих подключений для открытия порта службы MailService (например TCP 7705 и UDP 7705)
- В Службах Windows добавляется служба MegatecMailService.
- Для удаления службы кэширования необходимо запустить скрипт _UnInstall.bat от имени администратора. При этом будут удалены правила для входящих подключений.
- Настройка логирования
MailService поддерживает логирование событий и ошибок в консоль и/или файл. Все параметры задаются в конфигурационном файле appsettings.json, в секции "Logger".
№ | Описание | Настройка |
---|---|---|
1 | Включить логирование в консоль
|
"EnableConsole": true
|
2 | Путь к файлу логов.
Если путь не указан (пустая строка), лог-файл не создается. |
"FilePath": ""
|
3 | Максимальный размер лог-файла в мегабайтах.
При достижении лимита файл архивируется, и создается новый. |
"MaxLogFileSize": 10
|
4 | Количество хранимых старых лог-файлов.
Старые архивы удаляются при превышении лимита. |
"MaxOldLogFilesCount": 30
|
Пример секции "Logger" в appsettings.json:
"Logger": {
"EnableConsole": true,
"FilePath": "C:\\Logs\\mailservice.log",
"MaxLogFileSize": 10,
"MaxOldLogFilesCount": 30
}
Важно! При запуске службы, если обязательные параметры конфигурации отсутствуют или некорректны, ошибки выводятся в лог и консоль (при активном логировании).