Настройка электронной почты в устаревших конфигурациях, таких как 1С:Управление производственным предприятием (УПП), часто превращается в серьезную техническую задачу. Основная сложность заключается в том, что современные почтовые сервисы (Gmail, Mail.ru, Yandex, MS Exchange) перешли на строгие протоколы безопасности, в то время как механизмы платформы 1С версии 8.2 и ранних 8.3 имели ограниченную поддержку шифрования. Разберем подробно, почему возникает ошибка SMTP error code 530 и как правильно настроить отправку писем, используя различные методы.
Ошибка с кодом 530 буквально означает, что сервер требует аутентификации, но не получил ее в должном виде перед попыткой отправки сообщения. Рассмотрим ситуацию: вы заходите в системную учетную запись, ставите флаг "Требуется SMTP аутентификация", и проверка проходит успешно. Однако при реальной отправке, например, печатной формы счета, система выдает ошибку. Проанализируем, почему это происходит:
ОбщийМодуль.УправлениеЭлектроннойПочтой — на стороне сервера. Если на сервере 1С закрыты порты или не настроен доступ в интернет, аутентификация не пройдет.SSL или STARTTLS, сервер сбросит соединение с кодом 530.Если вы используете платформу версии 8.3.5 и выше, у вас появляется возможность полноценно управлять защищенным соединением. Проблема большинства старых конфигураций в том, что в коде их общих модулей не всегда учитываются новые свойства объекта ИнтернетПочтовыйПрофиль. Посмотрим на пример кода, который необходимо внедрить или проверить в процедуре формирования профиля:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru"; // или ваш сервер
Профиль.ПортSMTP = 465; // стандартный порт для SSL
Профиль.ПользовательSMTP = "user@mail.ru";
Профиль.ПарольSMTP = "ваш_пароль_приложения";
// Ключевые настройки для современных серверов
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Обратите внимание на свойство ПарольSMTP. Рассмотрим важный нюанс: современные публичные сервисы (Yandex, Mail.ru, Gmail) требуют создания "Пароля приложения". Обычный пароль от почтового ящика в 1С работать не будет — сервер будет выдавать ошибку авторизации 535 или 530. Вам необходимо зайти в настройки безопасности почты через браузер и сгенерировать специальный код для 1С.
Часто программисты сталкиваются с ошибкой Invalid token, probably not an SSL server при попытке включить шифрование. Проанализируем ситуацию: эта ошибка обычно возникает, когда 1С пытается начать зашифрованный сеанс (Implicit SSL) на порту, который ожидает обычное соединение с последующим переходом в защищенный режим (STARTTLS).
Профиль.ИспользоватьSSLSMTP = Истина. Соединение сразу устанавливается как защищенное.STARTTLS. В старых релизах платформы 1С корректная работа с этим портом может быть затруднена. Если сервер поддерживает оба порта, для 1С всегда надежнее выбирать 465.Если штатные средства ИнтернетПочта в УПП продолжают выдавать ошибки, или если ваш почтовый сервер (например, локальный Microsoft Exchange) требует специфических настроек аутентификации NTLM, можно использовать объект CDO.Message. Этот метод использует системные библиотеки Windows, которые зачастую лучше справляются с сертификатами и шифрованием. Рассмотрим пример реализации:
Письмо = Новый COMОбъект("CDO.Message");
Письмо.To = "recipient@example.com";
Письмо.From = "sender@example.com";
Письмо.Subject = "Тестовое письмо из 1С";
Письмо.TextBody = "Текст сообщения";
// Настройка параметров подключения
Конфигурация = Письмо.Configuration.Fields;
// Использование внешнего SMTP сервера
Конфигурация.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2;
Конфигурация.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "smtp.yourserver.ru";
Конфигурация.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = 465;
// Включение SSL
Конфигурация.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = Истина;
// Тип авторизации: 1 - Basic (логин/пароль)
Конфигурация.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1;
Конфигурация.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = "login";
Конфигурация.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = "password";
Конфигурация.Update();
Попытка
Письмо.Send();
Сообщить("Письмо успешно отправлено!");
Исключение
Сообщить("Ошибка отправки через CDO: " + ОписаниеОшибки());
КонецПопытки;
Этот способ является отличным "костылем", если обновить платформу 1С нет возможности, а почтовый сервер требует современных методов защиты. Однако помните, что этот код будет работать только на сервере под управлением Windows. Также при работе в терминальном режиме можно использовать решение для отправки писем через локальный почтовый клиент.
Если вы вынуждены работать на платформе версии 8.2, которая физически не поддерживает свойство ИспользоватьSSLSMTP, единственным стабильным решением будет использование утилиты stunnel. Выясним принцип работы: stunnel — это локальный прокси-сервер, который ставится на ту же машину, где работает сервер 1С.
Вы настраиваете 1С на отправку почты на localhost (127.0.0.1) по обычному порту 25 без всякого шифрования. Программа stunnel "слушает" этот порт, подхватывает письмо, упаковывает его в SSL/TLS туннель и передает на реальный сервер (например, smtp.gmail.com) по порту 465. Для 1С это выглядит как простейшая отправка, а почтовый сервер получает корректно зашифрованные данные.
В случае работы с корпоративным сервером Exchange, ошибка 530 часто связана не с кодом 1С, а с настройками Receive Connectors (Коннекторов получения). Проанализируем действия системного администратора:
From) не совпадает с логином, под которым 1С авторизовалась на сервере.Резюмируя, при возникновении ошибки 530 в УПП, пройдите по шагам: проверьте версию платформы (нужна 8.3.5+), убедитесь в наличии пароля приложения, попробуйте сменить порт на 465 с включенным SSL, а в случае неудачи — переходите на использование объекта CDO.Message. В качестве готовой альтернативы можно использовать обработку для отправки документов по почте из УПП.