При реализации механизмов отправки электронных писем из 1С разработчики часто сталкиваются с задачей максимально упростить настройку для конечного пользователя. В идеальном сценарии пользователю достаточно ввести свой почтовый адрес и пароль, а остальные технические параметры — адрес SMTP-сервера, порт, использование SSL/TLS — система должна определить автоматически. Разберем, какие подходы и алгоритмы позволяют решить эту задачу на платформе 1С:Предприятие 8.3.
Самый надежный и быстрый способ, применяемый в типовых конфигурациях на базе «Библиотеки стандартных подсистем» (БСП), — использование заранее подготовленной базы настроек для известных почтовых провайдеров.
Разберем по шагам логику работы этого метода:
@).Посмотрим на пример функции, разбирающей email и возвращающей структуру параметров:
Функция ПолучитьПараметрыПочтовогоСервера(Знач АдресПочты)
Параметры = Новый Структура;
Параметры.Вставить("СерверОтправки", "");
Параметры.Вставить("ПортОтправки", 465);
Параметры.Вставить("ИспользоватьSSL", Истина);
ПозицияСобаки = СтрНайти(АдресПочты, "@");
Если ПозицияСобаки = 0 Тогда
Возврат Параметры;
КонецЕсли;
Домен = НРег(Сред(АдресПочты, ПозицияСобаки + 1));
Если Домен = "yandex.ru" Или Домен = "ya.ru" Тогда
Параметры.СерверОтправки = "smtp.yandex.ru";
Параметры.ПортОтправки = 465;
Параметры.ИспользоватьSSL = Истина;
ИначеЕсли Домен = "mail.ru" Или Домен = "bk.ru" Или Домен = "inbox.ru" Или Домен = "list.ru" Тогда
Параметры.СерверОтправки = "smtp.mail.ru";
Параметры.ПортОтправки = 465;
Параметры.ИспользоватьSSL = Истина;
ИначеЕсли Домен = "gmail.com" Тогда
Параметры.СерверОтправки = "smtp.gmail.com";
Параметры.ПортОтправки = 465;
Параметры.ИспользоватьSSL = Истина;
КонецЕсли;
Возврат Параметры;
КонецФункции
Если домен является корпоративным или отсутствует в базе шаблонов, применяют метод эвристического подбора, аналогичный механизмам БСП. Проанализируем алгоритм:
smtp.<домен> и mail.<домен>.ИнтернетПочта. В случае успешного соединения без ошибок параметры фиксируются в профиле.Для создания универсального решения можно отправлять HTTP-запросы к публичным сервисам автонастройки почтовых клиентов через объект HTTPСоединение:
https://autoconfig.<домен>/mail/config-v1.1.xml или к глобальной базе провайдеров Mozilla ISPDB. Сервис возвращает XML-файл с точными адресами серверов, портами и типами аутентификации.https://autodiscover.<домен>/autodiscover/autodiscover.xml).В платформе 1С отсутствуют встроенные методы для прямого чтения DNS-записей (MX или SRV-записей _submission._tcp.<домен>). Если требуется получить MX-записи домена, используют либо внешние утилиты операционной системы, либо запросы к сервисам DNS-over-HTTPS (DoH).
Выясним важную деталь: даже при абсолютно верном определении сервера и порта отправка может завершиться ошибкой авторизации, если используется основной пароль от учетной записи.
Большинство почтовых сервисов (Яндекс, Mail.ru, Google и др.) по соображениям безопасности запрещают прямую базовую аутентификацию по основному паролю почтового ящика. Для работы из 1С пользователю необходимо: