Как настроить электронную почту в 1С и исправить ошибки SSL и SMTP?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей
← На главную

Настройка встроенной почты в 1С:Предприятии — задача, с которой рано или поздно сталкивается каждый технический специалист. Несмотря на наличие типовых механизмов, пользователи часто получают ошибки вида «SMTP greeting failure: 421 SMTP connection broken» или «Bad recipient address syntax». В этой статье мы подробно разберем, как правильно настроить почтовый профиль, как обеспечить поддержку современных протоколов шифрования (SSL/TLS) и как корректно обрабатывать списки получателей в программном коде.

Причины возникновения ошибки SMTP 421 и проблемы с SSL

Разберем ситуацию: вы пытаетесь подключиться к почтовому серверу (например, Gmail или Яндекс), но система выдает ошибку 421. Чаще всего это происходит из-за того, что почтовый сервер ожидает зашифрованное соединение, а старая конфигурация или платформа 1С пытается передать данные в открытом виде. Рассмотрим основные причины:

  1. Версия платформы: Поддержка SSL/TLS на уровне объекта ИнтернетПочтовыйПрофиль появилась в полном объеме только в версии 8.3. Если вы используете платформу 8.2 или ранние релизы 8.3 (ниже 8.3.10), встроенные средства могут не поддерживать современные стандарты шифрования (TLS 1.2).
  2. Настройки конфигурации: В старых типовых решениях (например, УТ 10.3 или старые версии КА) в справочнике учетных записей могут отсутствовать флаги «Использовать SSL».
  3. Блокировки безопасности: Современные сервисы (Google, Mail.ru) требуют использования паролей приложений. Обычный пароль от почтового ящика больше не подходит для авторизации через сторонние программы.

Проанализируем способы решения этой проблемы в зависимости от ваших условий.

Способ 1: Программная доработка учетной записи (для 1С 8.3)

Если ваша платформа позволяет работать с SSL, но в конфигурации это не реализовано, мы можем внести изменения в код. Рассмотрим пример доработки функции ПолучитьИнтернетПочтовыйПрофиль. Нам необходимо принудительно указать системе использовать защищенное соединение для протоколов POP3 и SMTP.

Посмотрим на пример кода, который можно внедрить в общий модуль (например, УправлениеЭлектроннойПочтой):


Функция ПолучитьИнтернетПочтовыйПрофиль(УчетнаяЗапись) Экспорт
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераPOP3 = УчетнаяЗапись.POP3Сервер;
    Профиль.АдресСервераSMTP = УчетнаяЗапись.SMTPСервер;
    Профиль.Пароль = УчетнаяЗапись.Пароль;
    Профиль.Пользователь = УчетнаяЗапись.Логин;
    Профиль.ПортPOP3 = УчетнаяЗапись.ПортPOP3;
    Профиль.ПортSMTP = УчетнаяЗапись.ПортSMTP;

    // Включаем поддержку SSL программно
    // Если в справочнике нет реквизитов, можно установить Истина принудительно
    Профиль.ИспользоватьSSLPOP3 = Истина; 
    Профиль.ИспользоватьSSLSMTP = Истина;

    Если УчетнаяЗапись.ТребуетсяSMTPАутентификация Тогда
        Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
        Профиль.ПарольSMTP = УчетнаяЗапись.ПарольSMTP;
        Профиль.ПользовательSMTP = УчетнаяЗапись.ЛогинSMTP;
    КонецЕсли;

    Возврат Профиль;
КонецФункции

Важный нюанс: Если вы используете порты 465 (для SSL) или 587 (для TLS), убедитесь, что они правильно прописаны в настройках учетной записи в самой 1С.

Способ 2: Использование стороннего ПО (Stunnel) для старых платформ

Выясним, что делать, если обновить платформу невозможно (например, вы работаете на 1С 8.1 или 8.2). В этом случае 1С физически не умеет «общаться» по SSL. Решением станет использование программы-туннеля, такой как stunnel.

Разберем логику работы этого метода:

  1. Вы устанавливаете stunnel на компьютер или сервер, где работает 1С.
  2. Настраиваете программу так, чтобы она слушала локальный порт (например, 127.0.0.1:25) и перенаправляла трафик на реальный сервер (smtp.gmail.com:465) с добавлением шифрования.
  3. В настройках 1С вы указываете адрес сервера 127.0.0.1 и порт 25 без всякого шифрования.

Этот метод позволяет работать с защищенной почтой даже из самых старых конфигураций без переписывания глобальных модулей.

Решение проблемы с несколькими получателями (Ошибка 501)

Рассмотрим ситуацию из практики: при попытке отправить письмо на несколько адресов, перечисленных через точку с запятой (например, email1@mail.ru; email2@mail.ru), 1С выдает ошибку «SMTP error code 501 5.1.3 Bad recipient address syntax».

Проанализируем причину: объект ИнтернетПочтовоеСообщение не умеет самостоятельно разбирать строку с разделителями в поле адреса. Он ожидает, что каждый адрес будет добавлен как отдельный объект в коллекцию Получатели.

Выполним правильную настройку отправки по шагам:


// Предположим, СписокАдресовСтрокой = "user1@test.ru; user2@test.ru"
МассивАдресов = СтрРазделить(СписокАдресовСтрокой, ";", Ложь);

Сообщение = Новый ИнтернетПочтовоеСообщение;
Для Каждого ТекущийАдрес Из МассивАдресов Цикл
    АдресПриемник = Сообщение.Получатели.Добавить();
    // Обязательно используем СокращенныйЛП, чтобы убрать лишние пробелы
    АдресПриемник.Адрес = СокращенП(ТекущийАдрес); 
КонецЦикла;

Сообщение.Тема = "Тестовое письмо";
Сообщение.Тексты.Добавить("Текст сообщения");

// Далее вызываем метод Послать() объекта ИнтернетПочта

Дополнительные рекомендации по стабильной работе почты

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

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

← На главную