Как исправить ошибку подключения к SMTP-серверу при отправке почты из 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При реализации отправки электронных писем средствами платформы «1С:Предприятие» разработчики часто сталкиваются с ошибкой: «Произошла ошибка при работе с SMTP. Код ошибки: 27» или сообщениями о том, что почтовый сервер недоступен либо не указан. Разберем по шагам, почему возникает эта проблема и как правильно настроить параметры подключения к почте.

Анализ типового фрагмента кода и выявление конфликтов

Рассмотрим исходный пример кода, при выполнении которого возникает сбой:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.АдресСервераSMTP = "mail.sms-tele.com";
Профиль.ПользовательSMTP = "почта";
Профиль.ПарольSMTP = "пароль";
Профиль.ПортSMTP = 25;
Профиль.Пользователь = "почта";
Профиль.Пароль = "снова пароль";
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина;

Почта = Новый ИнтернетПочта;
Попытка
    Почта.Подключиться(Профиль);
Исключение
    Сообщить("Ошибка при подключении к серверу: " + ОписаниеОшибки());
КонецПопытки;

Проанализируем ключевые параметры созданного профиля, которые приводят к ошибке:

  1. Несоответствие порта и режима SSL. В коде задано свойство Профиль.ИспользоватьSSLSMTP = Истина; совместно со значением Профиль.ПортSMTP = 25;. Порт 25 исторически предназначен для открытого соединения без шифрования либо для протокола с явным переходом на шифрование (STARTTLS). Прямое SSL/TLS-соединение (неявный SSL), которое включает платформа при установке свойства ИспользоватьSSLSMTP = Истина, по стандарту ожидает порт 465.
  2. Использование только защищенной аутентификации. Флаг Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина; предписывает платформе использовать строго механизм CRAM-MD5. Если сервер поддерживает только стандартные типы авторизации (PLAIN или LOGIN), работающие внутри уже зашифрованного канала, 1С вернет ошибку авторизации.

Способ 1. Корректировка параметров интернет-почтового профиля

Для устранения ошибки скорректируем настройки профиля в зависимости от требований почтового сервера.

Если сервер работает по защищенному протоколу SSL/TLS (порт 465):


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "mail.sms-tele.com";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Профиль.ПользовательSMTP = "user@domain.com";
Профиль.ПарольSMTP = "ПарольПриложенияИлиУчетки";
Профиль.Таймаут = 30;

Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);

Если почтовый сервер использует стандартный порт 25 или порт 587 (STARTTLS), отключим прямое свойство SSL:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "mail.sms-tele.com";
Профиль.ПортSMTP = 25; // Или 587
Профиль.ИспользоватьSSLSMTP = Ложь;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Профиль.ПользовательSMTP = "user@domain.com";
Профиль.ПарольSMTP = "Пароль";

Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);

Способ 2. Проверка сетевой доступности SMTP-сервера

Выясним, открыт ли сетевой порт до почтового сервера с рабочего места или сервера 1С. Для этого воспользуемся консольной утилитой Telnet в командной строке операционной системы:

Для проверки стандартного порта выполним команду:

telnet mail.sms-tele.com 25

Для проверки защищенного порта выполним команду:

telnet mail.sms-tele.com 465

Если командная строка сообщает, что команда telnet не найдена, включим данный компонент через «Включение или отключение компонентов Windows» (Telnet Client / Клиент Telnet). Успешное подключение к порту 25 отобразит приветственный баннер сервера с кодом 220, что подтверждает отсутствие сетевых блокировок брандмауэром или провайдером.

Способ 3. Сверка параметров через типовые конфигурации 1С

Если в информационной базе используется типовая конфигурация (например, «1С:ERP», «1С:Комплексная автоматизация», «1С:Управление торговлей» или «1С:Бухгалтерия»), используем встроенный механизм проверки:

  1. Перейдем в раздел Администрирование → Органайзер → Учетные записи электронной почты.
  2. Создадим учетную запись и укажем параметры сервера, логин и пароль.
  3. Нажмем кнопку Проверить учетную запись.
  4. Если встроенный тест прошел успешно, установим точку останова в модуле подсистемы «РаботаСПочтовымиСообщениями» и посмотрим точные значения свойств объекта ИнтернетПочтовыйПрофиль, которые сформировала БСП.

Способ 4. Проверка SSL-сертификатов и конфигурации платформы

Платформа «1С:Предприятие» строго проверяет цепочку сертификатов узла при включенном SSL. Если почтовый сервер корпоративный и на нем установлен самоподписанный сертификат, подключение завершится ошибкой 27. Рассмотрим пути решения:

  1. Установим корневой сертификат сервера в хранилище доверенных корневых центров сертификации операционной системы (на клиенте и на сервере 1С).
  2. Если требуется временно отключить проверку сертификата для почтового узла, откроем файл conf.cfg (находится в каталоге установки платформы bin/conf) и добавим строку:
    IgnoreInternetMailServerCertificateVerificationList=mail.sms-tele.com

Способ 5. Проверка логина и паролей приложений

Успешный вход в почту через браузер не гарантирует, что те же учетные данные сработают по протоколу SMTP. Обратим внимание на следующие особенности:

  1. Формат имени пользователя: некоторые серверы требуют указывать логин полностью (user@domain.com), другие — только имя учетной записи без доменной части (user). Проверим оба варианта в свойстве ПользовательSMTP.
  2. Двухфакторная аутентификация: современные почтовые сервисы блокируют передачу основного пароля учетной записи по SMTP/IMAP. В настройках безопасности почтового ящика необходимо выпустить отдельный пароль для внешних приложений и передавать его в ПарольSMTP.

Альтернативные способы отправки писем

Если специфика сети или настройки корпоративного почтового сервера не позволяют использовать объект ИнтернетПочта, применим альтернативные решения:

  1. Отправка через REST API почтового провайдера: сформируем HTTP-запрос к веб-сервису почты с помощью объектов HTTPСоединение и HTTPЗапрос.
  2. Использование COM-объекта CDO.Message: для операционных систем Windows сформируем письмо через системную библиотеку CDO, где поддерживаются расширенные параметры авторизации и портов.
  3. Использование почтового клиента MAPI: задействуем объект Почта, который передаст команду отправки через установленный в ОС почтовый клиент (например, Microsoft Outlook).
← На главную