Как настроить отправку почты через TLS в 1С:Бухгалтерия предприятия 2.0 и исправить ошибку 27

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При работе в устаревших конфигурациях, таких как Бухгалтерия предприятия, редакция 2.0, разработчики часто сталкиваются с критической проблемой при попытке отправить электронное письмо. Программа выдает диагностическое сообщение: Ошибка при вызове метода контекста (Подключиться): Произошла ошибка при работе с SMTP. Код ошибки: 27 (Ошибка установки защищенного SSL/TLS соединения). В этой статье мы подробно разберем, почему возникает эта ошибка и какими способами можно восстановить работоспособность почты, сохранив при этом привычную конфигурацию. В качестве альтернативы можно использовать инструмент для отправки почты через локальный почтовый клиент.

Выясняем причину возникновения ошибки 27

Для начала проанализируем ситуацию с технической точки зрения. Конфигурация БП 2.0 изначально разрабатывалась под платформу 1С:Предприятие 8.2. В свойствах этой конфигурации установлен «Режим совместимости: Версия 8.2.16». Именно в этом кроется корень проблемы. Современные почтовые сервисы (такие как Mail.ru, Yandex, Gmail) в целях безопасности отказались от поддержки старых протоколов шифрования (SSL) и перешли на TLS 1.2 и выше.

Объект платформы ИнтернетПочта в режиме совместимости 8.2 использует устаревшие системные библиотеки, которые просто «не умеют» инициировать соединение по современным протоколам TLS. Даже если вы запускаете базу на последней версии платформы 8.3.25, включенный режим совместимости заставляет 1С имитировать поведение старой версии 8.2, блокируя использование актуальных методов шифрования. Рассмотрим подробнее способы обхода этого ограничения.

Решение №1: Использование Stunnel для проксирования трафика

Рассмотрим наиболее стабильный и рекомендуемый метод, который не требует изменения программного кода 1С или поднятия режима совместимости. Это использование утилиты Stunnel. Разберем этот метод по шагам.

Суть метода заключается в создании локального «туннеля». Программа 1С будет подключаться к локальному адресу (вашему компьютеру) по обычному протоколу без шифрования, а Stunnel будет подхватывать этот трафик, упаковывать его в современный TLS 1.2/1.3 и передавать на сервер почтового провайдера.

Шаг 1: Настройка Stunnel

После установки программы необходимо отредактировать файл конфигурации stunnel.conf. Добавим в него следующую секцию для работы с SMTP:


[gmail-smtp]
client = yes
accept = 127.0.0.1:25
connect = smtp.gmail.com:465
checkHost = smtp.gmail.com
OCSPiauthority = yes

В данном примере accept = 127.0.0.1:25 означает, что Stunnel будет слушать порт 25 на локальной машине, а connect = smtp.gmail.com:465 указывает адрес и порт реального почтового сервера с поддержкой SSL/TLS.

Шаг 2: Настройка в 1С

Теперь проанализируем изменения, которые нужно внести в настройки почтового профиля в 1С. Вместо реального сервера прописываем локальный адрес:

  1. Сервер входящей/исходящей почты: 127.0.0.1 (или localhost).
  2. Порт: 25 (тот, что мы указали в accept).
  3. Использовать защищенное соединение (SSL/TLS): Ложь (галочку нужно снять, так как шифрование теперь берет на себя Stunnel).

Этот способ позволяет отправлять почту даже из очень старых версий 1С, не опасаясь обновлений платформы.

Решение №2: Изменение режима совместимости конфигурации

Если ваша конфигурация снята с поддержки и вы готовы к экспериментам, можно попробовать изменить настройки самой базы данных. Выясним, как это влияет на работу системы. Поддержка TLS 1.2 на уровне объекта ИнтернетПочта полноценно появилась в платформе, начиная с версии 8.3.9.

Чтобы активировать эти возможности, необходимо в конфигураторе открыть свойства корня конфигурации и изменить параметр Режим совместимости на значение «Версия 8.3.9» или выше. Однако, проанализируем возможные риски этого шага:

  1. Модальные окна: В БП 2.0 повсеместно используются модальные вызовы. При переходе на 8.3 они могут начать блокироваться, если не изменить свойство «Режим использования модальности».
  2. Интерфейс: Могут возникнуть визуальные дефекты в обычных формах (смещение элементов, изменение шрифтов).
  3. Производительность: Некоторые запросы могут начать работать иначе из-за смены версии оптимизатора в ядре платформы.

Если вы выбрали этот путь, после смены режима совместимости в коде формирования ИнтернетПочтовыйПрофиль можно будет явно указывать тип шифрования, если это предусмотрено обновленными свойствами объекта.

Решение №3: Использование системных объектов Windows (CDO.Message)

Рассмотрим вариант, когда мы не хотим устанавливать стороннее ПО и менять режим совместимости. Мы можем использовать COM-объект CDO.Message, который обращается к системным библиотекам Windows. Это позволяет обойти ограничения 1С, так как Windows (при условии актуальных обновлений) поддерживает современные протоколы TLS.

Разберем пример кода для отправки письма через этот механизм:


Процедура ОтправитьПисьмоCDO(Сервер, Порт, Логин, Пароль, Кому, Тема, Текст)
    Письмо = Новый COMОбъект("CDO.Message");
    Конфигурация = Новый COMОбъект("CDO.Configuration");
    
    Поля = Конфигурация.Fields;
    Поля.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2;
    Поля.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = Сервер;
    Поля.Item("http://schemas.microsoft.com/cdo/configuration/smptserverport").Value = Порт;
    Поля.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1;
    Поля.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = Логин;
    Поля.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = Пароль;
    Поля.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = Истина;
    Поля.Update();
    
    Письмо.Configuration = Конфигурация;
    Письмо.To = Кому;
    Письмо.From = Логин;
    Письмо.Subject = Тема;
    Письмо.TextBody = Текст;
    
    Попытка
        Письмо.Send();
        Сообщить("Письмо успешно отправлено!");
    Исключение
        Сообщить("Ошибка отправки: " + ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Этот метод часто спасает в ситуациях, когда встроенный в 1С объект ИнтернетПочта выдает ошибку 27. Важно помнить, что для работы этого метода на старых ОС (например, Windows Server 2008 R2) может потребоваться включение TLS 1.2 в реестре Windows через параметры WinHTTP. Для последующей настройки рассылки документов в этой конфигурации можно применить обработку для отправки актов сверки по электронной почте.

Решение №4: Особенности платформы 8.3.22 и выше (проверка сертификатов)

Проанализируем еще одну ситуацию. Бывает так, что вы обновили платформу до версии 8.3.22 или старше, подняли режим совместимости, но ошибка 27 все равно сохраняется. В свежих релизах платформы 1С была усилена проверка сертификатов серверов.

Если сертификат почтового сервера кажется 1С «неблагонадежным», соединение будет разорвано. Чтобы исправить это, необходимо внести изменения в файл conf.cfg, который находится в папке установленной платформы (обычно C:\Program Files\1cv8\conf).

Добавьте в этот файл следующую строку, чтобы игнорировать проверку для конкретных серверов:


IgnoreInternetMailServerCertificateVerificationList=smtp.mail.ru;smtp.yandex.ru;smtp.gmail.com

Подводим итоги

Мы проанализировали несколько способов решения проблемы с почтой в БП 2.0. Выбор конкретного метода зависит от ваших полномочий и технического окружения:

  1. Stunnel — лучший выбор для стабильной работы без изменения кода.
  2. CDO.Message — отличный программный обходной путь, если нельзя ставить лишний софт на сервер.
  3. Повышение режима совместимости — радикальный метод, требующий тщательного тестирования всей функциональности базы.

При использовании любого из этих методов мы рекомендуем предварительно проверить доступность портов почтового сервера (465 или 587) с помощью команды telnet, чтобы исключить блокировки со стороны антивирусов или брандмауэров.

← На главную