Как реализовать отправку почты из 1С 8.2, если почтовый сервер требует SSL?

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

При работе в устаревших конфигурациях, таких как 1С:Бухгалтерия 2.0 на платформе 1С:Предприятие 8.2, разработчики часто сталкиваются с невозможностью отправить электронное письмо через современные сервисы (Yandex, Mail.ru, Gmail). Основная причина заключается в том, что объект ИнтернетПочтовыйПрофиль в версии 8.2 не имеет встроенного свойства для включения SSL-шифрования, которое стало обязательным для большинства почтовых провайдеров.

В этой статье мы подробно разберем, почему возникает ошибка тайм-аута, и проанализируем несколько способов решения проблемы: от настройки системных компонентов до использования стороннего программного обеспечения.

Почему возникает ошибка при подключении?

Рассмотрим стандартный код, который часто используют разработчики:


Профиль = Новый ИнтернетПочтовыйПрофиль;
профиль.ПортSMTP = 465;
профиль.АдресСервераSMTP = "smtp.yandex.ru";
профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);

Выясним причину сбоя: при выполнении метода Подключиться() система пытается установить соединение по порту 465, который ожидает зашифрованный трафик (SSL). Платформа 8.2 отправляет данные в открытом виде, сервер не получает ожидаемого рукопожатия (handshake) и обрывает соединение по тайм-ауту. Свойство ИспользоватьSSLSMTP появилось только в платформе версии 8.3.1, поэтому в 8.2 напрямую этот механизм не работает.

Решение 1: Переход на платформу 8.3

Самый правильный и надежный способ — это запуск существующей информационной базы на платформе 8.3 в режиме совместимости. Проанализируем ситуацию: даже если конфигурация остается старой («Бухгалтерия 2.0»), использование актуального движка платформы позволяет задействовать новые свойства объектов.

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

  1. Убедимся, что режим совместимости в свойствах конфигурации позволяет использовать новые свойства почтового профиля.
  2. Добавим в код установку флага SSL:

Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;

Как отмечают участники обсуждения, это решает проблему мгновенно, так как 1С 8.3 умеет корректно работать с защищенными портами.

Решение 2: Использование COM-объекта CDO.Message

Если организация категорически не готова переходить на платформу 8.3, мы можем воспользоваться системным компонентом Windows — CDO (Collaboration Data Objects). Этот объект позволяет отправлять почту, используя встроенные возможности операционной системы, игнорируя ограничения платформы 1С.

Посмотрим на пример реализации такой функции:


Конфигурация = Новый COMОбъект("CDO.Configuration");
Конфигурация.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2;
Конфигурация.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "smtp.yandex.ru";
Конфигурация.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = 465;
Конфигурация.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = Истина;
Конфигурация.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1;
Конфигурация.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = "ваш_логин";
Конфигурация.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = "пароль_приложения";
Конфигурация.Fields.Update();

Письмо = Новый COMОбъект("CDO.Message");
Письмо.Configuration = Конфигурация;
Письмо.From = "ваш_адрес@yandex.ru";
Письмо.To = "кому@mail.ru";
Письмо.Subject = "Тема письма";
Письмо.TextBody = "Текст сообщения";
Письмо.Send();

Важный нюанс: для современных почтовых сервисов (Яндекс, Mail.ru) в поле sendpassword необходимо указывать не основной пароль от почты, а специальный пароль приложения, сгенерированный в настройках безопасности вашего почтового ящика.

Решение 3: Использование программы-туннеля (stunnel)

Рассмотрим вариант для системных администраторов — использование утилиты stunnel. Этот метод позволяет «обмануть» 1С, заставив её думать, что она отправляет почту без шифрования.

Разберем принцип работы по шагам:

  1. На компьютере с 1С устанавливается и настраивается stunnel.
  2. В конфигурационном файле stunnel прописывается перенаправление: локальный порт 25 (или любой свободный) связывается с внешним адресом smtp.yandex.ru:465.
  3. Программа stunnel берет на себя всю работу по установке SSL-соединения.

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


Профиль.АдресСервераSMTP = "127.0.0.1"; // Локальный адрес
Профиль.ПортSMTP = 25; // Порт, который слушает stunnel

Это надежное решение, которое часто применялось до массового перехода на 1С 8.3.

Настройка почтового сервиса

Независимо от выбранного способа, необходимо правильно подготовить сам почтовый ящик. Проанализируем обязательные требования сервисов:

Подведем итог: использование стандартного объекта ИнтернетПочта в 1С 8.2 для работы с SSL невозможно. Оптимальным решением является использование платформы 8.3. Если же это невозможно, следует использовать системный объект CDO.Message или сторонние средства проксирования трафика.

← На главную