Как подключить почту с методом шифрования TLS в 1С:Комплексная автоматизация 1.1

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

Проблема подключения почтовых сервисов к устаревшим конфигурациям, таким как 1С:Комплексная автоматизация 1.1 (КА 1.1), работающим в режиме толстого клиента, становится всё более актуальной. Современные почтовые сервера (Яндекс, Gmail, Mail.ru) давно отказались от небезопасных соединений и требуют использования протоколов TLS 1.1 или TLS 1.2. В этой статье мы разберем несколько способов решения этой задачи, начиная от штатных возможностей платформы и заканчивая обходными путями.

Способ 1. Использование штатных возможностей платформы 8.3.8 и выше

Первым делом проанализируем версию используемой платформы 1С. Хотя поддержка TLS для тонкого клиента появилась еще в версии 8.3.4, полноценная работа с протоколами TLS 1.1 и 1.2 для объекта ИнтернетПочта была реализована начиная с версии 8.3.8. Если ваша база запущена на платформе ниже этой версии, штатные средства 1С, скорее всего, не смогут установить защищенное соединение с современным сервером.

Разберем, как настроить профиль почты, если платформа обновлена:

  1. Убедимся, что в свойствах объекта ИнтернетПочтовыйПрофиль правильно указаны параметры защиты.
  2. Для SMTP необходимо использовать свойство ИспользоватьЗащищенноеСоединениеSMTP.
  3. Для IMAP используем свойство ИспользоватьЗащищенноеСоединениеIMAP.
  4. Важно правильно выбрать тип соединения. Рассмотрим пример кода для настройки профиля:

Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПортSMTP = 465;
// Для порта 465 обычно используется SSL, для 587 - STARTTLS (явный TLS)
Профиль.ИспользоватьЗащищенноеСоединениеSMTP = Истина;
Профиль.ТолькоЗащищеннаяАвторизацияSMTP = Ложь;

Профиль.АдресСервераIMAP = "imap.yandex.ru";
Профиль.ПортIMAP = 993;
Профиль.ИспользоватьЗащищенноеСоединениеIMAP = Истина;

Важный нюанс: обратим внимание на режим совместимости конфигурации. Если в КА 1.1 установлен режим совместимости с версиями 8.2 или ранними 8.3, платформа может игнорировать новые свойства профиля. В некоторых случаях помогает отключение режима совместимости, но это требует тщательного тестирования всей системы.

Способ 2. Применение прокси-утилиты stunnel

Если обновление платформы невозможно или штатные средства всё равно выдают ошибку соединения, воспользуемся проверенным методом — созданием локального туннеля через утилиту stunnel. Этот способ позволяет «обмануть» 1С: программа будет подключаться к локальному адресу без шифрования, а stunnel будет принимать этот трафик, шифровать его по протоколу TLS и отправлять на почтовый сервер.

Схема настройки выглядит следующим образом:

Способ 3. Использование системного объекта CDO.Message

Для толстого клиента на ОС Windows мы можем обойти ограничения 1С, обратившись напрямую к системным библиотекам через COM-объект. Рассмотрим пример отправки письма через CDO.Message, который гибко настраивается под требования TLS через реестр операционной системы.


Письмо = Новый COMОбъект("CDO.Message");
Конфиг = Письмо.Configuration;
Поля = Конфиг.Fields;

// Настройка параметров отправки
Схема = "http://schemas.microsoft.com/cdo/configuration/";
Поля.Item(Схема + "sendusing").Value = 2; // Port
Поля.Item(Схема + "smtpserver").Value = "smtp.mail.ru";
Поля.Item(Схема + "smptserverport").Value = 465;
Поля.Item(Схема + "smtpusessl").Value = Истина;
Поля.Item(Схема + "smtpauthenticate").Value = 1;
Поля.Item(Схема + "sendusername").Value = "login@mail.ru";
Поля.Item(Схема + "sendpassword").Value = "password";

Поля.Update();
Письмо.Subject = "Тема письма";
Письмо.From = "login@mail.ru";
Письмо.To = "dest@example.com";
Письмо.TextBody = "Текст сообщения";
Письмо.Send();

Этот метод часто оказывается более стабильным в старых конфигурациях, так как использует механизмы ОС, которые регулярно обновляются вместе с Windows.

Способ 4. Вызов скриптов PowerShell

Проанализируем еще один современный подход — использование PowerShell. Системная утилита Send-MailMessage отлично справляется с TLS 1.2. Мы можем сформировать строку команды и запустить её из 1С с помощью функции ЗапуститьПриложение().

Пример формирования команды:


Команда = "powershell -ExecutionPolicy Bypass -Command ""$secpasswd = ConvertTo-SecureString 'ПарольПриложения' -AsPlainText -Force;
$creds = New-Object System.Management.Automation.PSCredential ('vasha_pochta@mail.ru', $secpasswd);
Send-MailMessage -From 'vasha_pochta@mail.ru' -To 'komu@mail.ru' -Subject 'Заголовок' -Body 'Текст' -SmtpServer 'smtp.mail.ru' -Port 587 -UseSsl -Credential $creds""";
ЗапуститьПриложение(Команда, , Истина);

Диагностика и типичные ошибки

Выясним основные причины, по которым даже при правильном коде соединение может не устанавливаться:

  1. Корневые сертификаты: Убедимся, что в операционной системе установлены актуальные корневые сертификаты удостоверяющего центра почтового сервера. Для серверных вызовов проверьте файл bin\cacert.pem в каталоге установки 1С.
  2. Пароли приложений: Помните, что Яндекс, Gmail и Mail.ru при использовании TLS требуют создания специального пароля приложения в настройках безопасности аккаунта. Обычный пароль от почты работать не будет.
  3. Настройки Schannel: В старых версиях Windows (например, Windows Server 2008 R2) протоколы TLS 1.1/1.2 могут быть отключены в реестре на уровне системы. Проверьте ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols.
  4. Различия Explicit и Implicit TLS: Если вы подключаетесь на порт 465, это обычно Implicit TLS (SSL). Порт 587 требует Explicit TLS (STARTTLS). Убедитесь, что настройки в 1С соответствуют требованиям провайдера.

Проанализировав вышеперечисленные методы, мы видим, что даже в КА 1.1 на толстом клиенте существует множество способов наладить работу с защищенной почтой. Выбор конкретного пути зависит от возможности обновления платформы и прав доступа к настройкам операционной системы.

← На главную