При работе с почтовыми сервисами (особенно часто с Mail.ru) пользователи 1С могут столкнуться с критической ошибкой: «SMTP error code 503 valid RCPT command must precede DATA». Эта проблема парализует отправку счетов, уведомлений и отчетов, возникая даже тогда, когда настройки почтового профиля кажутся абсолютно верными. В данной статье мы подробно разберем, почему возникает этот сбой, как он связан с обновлением платформы 1С и какими способами можно восстановить работоспособность почты.
Для начала разберем, что именно сообщает нам почтовый сервер. Протокол SMTP (Simple Mail Transfer Protocol) работает как строгая последовательность команд. Стандартный сеанс выглядит так:
EHLO — приветствие клиента.AUTH LOGIN — авторизация пользователя.MAIL FROM — указание адреса отправителя.RCPT TO — указание адреса получателя (или нескольких).DATA — команда на передачу текста письма и вложений.Ошибка 503 означает нарушение этой последовательности. Сервер говорит: «Команда DATA получена слишком рано, ей должна предшествовать валидная команда RCPT». Проще говоря, 1С пытается отправить содержимое письма, не сообщив серверу, кому оно адресовано, либо сервер отклонил всех предложенных получателей, а 1С проигнорировала этот отказ и попыталась продолжить процесс.
Как показывает практика и обсуждения специалистов, наиболее частой причиной внезапного появления этой ошибки является переход на платформу версии 8.3.22.1704, 8.3.22.1750 и смежные релизы. В этой ветке платформы разработчики 1С существенно обновили библиотеки работы с защищенными соединениями (OpenSSL) и внесли изменения в объект ИнтернетПочта.
Проанализируем ситуацию: на этих релизах объект ИнтернетПочта может некорректно обрабатывать TLS-рукопожатие или таймауты ответов сервера. Если сервер Mail.ru подтверждает получение адреса получателя с микроскопической задержкой, платформа 1С «проскакивает» ожидание ответа и сразу шлет DATA, что и вызывает 503 ошибку.
Способы решения:
Если ваша платформа стабильна, но ошибка возникла внезапно, нам необходимо проверить данные, которые менеджеры вносят в систему. Сервер SMTP выдает 503, если команда RCPT TO была отправлена, но сервер её отклонил из-за синтаксической ошибки в адресе.
Рассмотрим типичные примеры «косячных» адресов:
user@gmail.ru вместо .com).vasia@mail.ru petia@mail.ru.Разберем, как это реализовано в типовых конфигурациях (например, ERP 2.5). В модуле РаботаСПочтовымиСообщениямиСлужебный существует процедура ОтправитьПисьма(). Если один из адресатов некорректен, сервер отклоняет его, и если логика программы не прерывает отправку, следующая команда DATA вызывает фатальную ошибку 503.
Иногда проблема кроется в проверке сертификатов почтовых серверов. Рассмотрим, как можно принудительно заставить 1С игнорировать ошибки проверки сертификатов, что часто помогает при работе через прокси-серверы или антивирусы (например, Kaspersky), которые подменяют SSL-трафик.
Для этого в файле конфигурации conf.cfg (который обычно находится в папке с установленной платформой C:\Program Files\1cv8\conf) можно прописать следующие параметры:
SystemLanguage=RU
IgnoreInternetMailServerCertificateVerificationList=imap.gmail.com;smtp.gmail.com;imap.mail.ru;smtp.mail.ru
Это позволит платформе игнорировать цепочки сертификатов для указанных серверов и более стабильно устанавливать соединение.
Не забываем про базовую настройку для Mail.ru. С 2022 года почтовые сервисы запретили использование основного пароля от ящика во внешних программах. Проверим, выполнены ли у вас следующие шаги:
Если обновить платформу невозможно, а встроенный объект ИнтернетПочта продолжает давать сбои, рассмотрим вариант использования системной библиотеки Windows CDO (Collaboration Data Objects). Этот метод работает в обход механизмов 1С, используя стандартные компоненты ОС.
Пример кода для реализации отправки через CDO:
// Создание объекта сообщения
Почта = Новый COMОбъект("CDO.Message");
Конфигурация = Новый COMОбъект("CDO.Configuration");
// Настройка полей SMTP
Поля = Конфигурация.Fields;
Поля.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2; // SMTP
Поля.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "smtp.mail.ru";
Поля.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = 465;
Поля.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1; // Basic
Поля.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = "your_login@mail.ru";
Поля.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = "app_password";
Поля.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = Истина;
Поля.Update();
Почта.Configuration = Конфигурация;
Почта.From = "your_login@mail.ru";
Почта.To = "recipient@example.com";
Почта.Subject = "Тестовое письмо";
Почта.TextBody = "Текст сообщения";
Попытка
Почта.Send();
Сообщить("Письмо успешно отправлено через CDO");
Исключение
Сообщить("Ошибка отправки: " + ОписаниеОшибки());
КонецПопытки;
Подведем итог. Ошибка 503 valid RCPT command must precede DATA в 90% случаев при работе с 1С обусловлена либо багом конкретного релиза платформы (8.3.22), либо грязными данными в адресах получателей.
Проанализируем ваши действия по шагам при возникновении проблемы:
Соблюдение этих рекомендаций позволит вам быстро восстановить работу почтовой службы и избежать простоев в бизнес-процессах.