Мастер-Тур(15):MailService
Содержание
[убрать]Введение
MailService – это служба для отправки email-уведомлений и сообщений, формируемых в процессе бронирования туров. Сервис поддерживает очередь отправки, работу с шаблонами, исключение повторной отправки на одинаковые адреса, логирование и приоритетное использование пользовательских шаблонов с суффиксом _custom.
Установка службы MailService
- Скопировать папку MailService из дистрибутива на сервер приложений.
- Указать настройки MailServiceUrl – адрес сервиса отправки сообщений в Megateс.TourSearchOwin.exe.config службы TourSearchOwin
- Включить 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
}
Важно! При запуске службы, если обязательные параметры конфигурации отсутствуют или некорректны, ошибки выводятся в лог и консоль (при активном логировании).