Мастер-Тур(15):MailService — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Поддержка пользовательских шаблонов)
Строка 317: Строка 317:
  
 
|- style="vertical-align\:text-middle"
 
|- style="vertical-align\:text-middle"
| manager order report.xml / manager order report\_html.xml
+
| manager order report.xml / manager order report_html.xml
 
| Новая заявка от агентства (для агента и менеджера)
 
| Новая заявка от агентства (для агента и менеджера)
  

Версия 10:53, 8 июля 2025

Введение

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 (рекомендуется).

Внимание!
При смене порта нужно изменить его и в _Install.bat.

"ServiceAddress": [ "http://localhost:7705" ]
3 IP-адрес, на котором будет работать MailService.
  • IPAddress.IPv6Any — слушать все доступные IPv6-интерфейсы.
  • IPAddress.Any — слушать все IPv4-интерфейсы.
  • Также можно задать конкретный IP-адрес сервера.

Важно: Указание 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 Сообщение о новой заявке от агента
  • Ведущий менеджер по путевке
  • Администратор системы
  • Дополнительный e-mail для агента (AddRcptToAgent)
  • E-mail по стране
2 Сообщение о новой заявке от частного лица
  • Ведущий менеджер по путевке
  • Администратор системы
  • Дополнительный e-mail для частного лица (AddRcptToPerson)
  • E-mail по стране

Настройки почты в конфигурации

Описание Настройка
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 для использования почты Google Mail.

   {
        "MailFrom": "primer@GoogleMail.com",
        "SmtpServer": "smtp.gmail.com",
        "SmtpPort": 25, //or 587
        "Authentication": "TLS/SSL",
        "SmtpUser": "GMailUser@GoogleMail.com",
        "SmtpPassword": "Pa$$w0rd",        
        "EnableSSL": true
      }

Внимание! Необходимо также настроить почтовый ящик Google Mail:

  • Осуществить вход в почтовый ящик Google Mail
  • Выбрать раздел "Мой аккаунт" в списке "Приложения Google"
  • Перейти в раздел "Безопасность и вход", включить опцию Ненадежные приложения разрешены

Пример почтовых настроек 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 игнорируется.
  • Пользователь может переопределить любые шаблоны (по классам, именам файлов, форматам).
Используемые шаблоны
Шаблон Назначение письма
annulateReport.xml Сообщение об аннуляции путевки
annulateRequest.xml Запрос на аннуляцию путевки
changetouristname.xml Изменение данных туристов
manager order report.xml / manager order report_html.xml Новая заявка от агентства (для агента и менеджера)
messageToManager.xml Примечание по заявке
passwordrecovery.xml Восстановление пароля
personal order report.xml Новая заявка от частного лица (для агента и менеджера)
siteError.xml Ошибка в системе

Установка и удаление службы

  • Установка осуществляется запуском скрипта _Install.bat от имени администратора. Запуск от имени администратора
  • При установке в Брандмауэре Windows создаются правила для входящих подключений для открытия порта службы MailService (например TCP 7705 и UDP 7705)
  • В Службах Windows добавляется служба MegatecMailService.

MegatecMailService

  • Для удаления службы кэширования необходимо запустить скрипт _UnInstall.bat от имени администратора. При этом будут удалены правила для входящих подключений.
Настройка логирования

MailService поддерживает логирование событий и ошибок в консоль и/или файл. Все параметры задаются в конфигурационном файле appsettings.json, в секции "Logger".

Описание Настройка
1 Включить логирование в консоль
  • true – логирование в консоль активно
  • false – логирование в консоль отключено
  "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
}

Важно! При запуске службы, если обязательные параметры конфигурации отсутствуют или некорректны, ошибки выводятся в лог и консоль (при активном логировании).