Как исправить ошибку SMTP 5.7.0 при отправке почты из 1С:УТ 10.3 через Яндекс?

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

При работе в конфигурации 1С:Управление торговлей 10.3 (УТ 10.3) программисты часто сталкиваются с проблемой при отправке электронных писем. Ошибка 5.7.0 Почтовый ящик не доступен или Authentication failed может возникнуть даже в тех случаях, когда тестовое соединение проходит успешно, а в настройках используется корректный пароль приложения. В данной статье мы подробно разберем причины возникновения этой ошибки, проанализируем программный код и предложим варианты решения задачи.

Разбор программной реализации отправки почты

Для начала рассмотрим типовой код реализации отправки сообщения через объект ИнтернетПочта. Часто ошибка кроется в неправильной инициализации параметров профиля. Разберем пример кода, который часто используется в подобных задачах:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПользовательSMTP = Результат.Почта; // Логин от почтового ящика
Профиль.ПарольSMTP = Пароль;  // Пароль приложения, сгенерированный в Яндексе
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПортSMTP = 465;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;

Письмо = Новый ИнтернетПочтовоеСообщение;
Текст = Письмо.Тексты.Добавить(Объект.ТекстПисьма);
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Письмо.Тема = "Тестовое письмо из 1С";
Письмо.Отправитель = Почта; // Здесь должен быть адрес, совпадающий с логином
Письмо.ИмяОтправителя = ПараметрыСеанса.ТекущийПользователь.Наименование;

Письмо.Получатели.Добавить(Строка.Значение.Почта);    

ПочтаОбъект = Новый ИнтернетПочта;
Попытка
    ПочтаОбъект.Подключиться(Профиль);
    ПочтаОбъект.Послать(Письмо);
    ПочтаОбъект.Отключиться();
Исключение
    Сообщить("Не удалось отправить письмо: " + ОписаниеОшибки());
КонецПопытки;

Проанализируем этот код. Важно понимать, что метод Подключиться может пройти успешно, так как он проверяет только возможность установления связи с сервером. Ошибка же возникает непосредственно при вызове метода Послать, когда сервер SMTP проводит финальную валидацию отправителя и его прав.

Причина №1: Лишние символы в настройках

Одной из самых банальных, но труднозаметных причин ошибки 5.7.0 является наличие пробелов в строковых переменных. Выясним причину: если в справочнике учетных записей или в переменной, хранящей адрес почты, в конце строки закрался пробел (например, "info@yandex.ru " вместо "info@yandex.ru"), авторизация может пройти, но сервер отклонит команду MAIL FROM, так как адрес не будет соответствовать авторизованному пользователю. Рекомендуется всегда использовать функцию СокрЛП() при получении данных из базы.

Причина №2: Соответствие отправителя и учетной записи

Яндекс крайне строго следит за тем, чтобы адрес, указанный в свойстве Письмо.Отправитель, полностью совпадал с логином, указанным в Профиль.ПользовательSMTP. Рассмотрим ситуацию: если вы авторизуетесь под пользователем manager@yandex.ru, а в письме пытаетесь указать отправителя info@yandex.ru, сервер вернет ошибку 5.7.0 или 5.5.0. Это защита от подмены адреса (Email Spoofing).

Также проверьте свойство Сообщение.Отправитель.Адрес. В некоторых случаях сервер требует, чтобы это поле было заполнено корректно и без дополнительных имен в кавычках.

Причина №3: Настройки безопасности на стороне Яндекса

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

  1. Перейдите в Настройки -> Почтовые программы.
  2. Убедитесь, что установлена галочка "Разрешить доступ к почтовому ящику с помощью почтовых клиентов".
  3. Должен быть выбран протокол IMAP или POP3 (для отправки критичен доступ по SMTP, но без общей активации доступа сторонними программами он может не работать).
  4. Обязательно используйте Пароль приложения. Обычный пароль от почтового ящика в 1С работать не будет из-за политики безопасности Яндекса.

Причина №4: Проблемы с TLS и версией платформы

Конфигурация УТ 10.3 часто эксплуатируется на устаревших версиях платформы 1С. Посмотрим на ситуацию с технической стороны: современные почтовые серверы требуют протокол шифрования TLS 1.2. Если ваша платформа ниже версии 8.3.10, встроенный объект ИнтернетПочта может не поддерживать этот протокол корректно. В таком случае соединение будет сбрасываться с ошибкой SMTP.

Решением в данной ситуации может быть использование объекта CDO.Message или внешних библиотек, которые работают через системные вызовы Windows, поддерживающие актуальные протоколы шифрования.

Причина №5: Влияние антивирусного ПО

Проанализируем работу сетевых экранов. Ошибка "Почтовый ящик не доступен" часто возникает, когда антивирус (например, Kaspersky) пытается проверить защищенное SSL-соединение. Он подменяет сертификат сервера своим собственным, 1С не опознает этот сертификат и обрывает сессию. Для устранения этой проблемы попробуйте временно отключить проверку защищенных соединений или добавьте адрес smtp.yandex.ru в исключения антивируса.

Использование встроенных механизмов УТ 10.3

Вместо того чтобы писать код "с нуля", в УТ 10.3 можно воспользоваться встроенной процедурой из общего модуля УправлениеЭлектроннойПочтой. Это более надежный способ, так как в типовом решении уже учтены многие нюансы. Рассмотрим пример:


СтруктураНовогоПисьма = Новый Структура;
СписокКому = Новый СписокЗначений;
СписокКому.Добавить(АдресПолучателя, Строка(Контрагент));

СтруктураНовогоПисьма.Вставить("Кому", СписокКому);
СтруктураНовогоПисьма.Вставить("УчетнаяЗапись", УчетнаяЗаписьПочты); // Ссылка на справочник УчетныеЗаписиЭлектроннойПочты
СтруктураНовогоПисьма.Вставить("Тело", ТекстПисьма);
СтруктураНовогоПисьма.Вставить("ВидТекста", Перечисления.ВидыТекстовЭлектронныхПисем.Текст);
СтруктураНовогоПисьма.Вставить("Тема", "Напоминание о задолженности");

НовоеПисьмо = УправлениеЭлектроннойПочтой.НаписатьПисьмо(ПараметрыСеанса.ТекущийПользователь, СтруктураНовогоПисьма,,,,,,,Ложь);
НовоеПисьмо.Письмо.СтатусПисьма = Перечисления.СтатусыПисем.Исходящее;
НовоеПисьмо.Письмо.Записать();

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

Итоги и рекомендации

Если вы столкнулись с ошибкой 5.7.0, рекомендуем придерживаться следующего алгоритма:

  1. Проверьте отсутствие лишних пробелов в адресе отправителя и логине.
  2. Убедитесь, что используете порт 465 и свойство ИспользоватьSSLSMTP = Истина.
  3. Проверьте, что Письмо.Отправитель в точности совпадает с Профиль.ПользовательSMTP.
  4. Удостоверьтесь, что в настройках Яндекса включен доступ для почтовых программ и создан пароль приложения.
  5. Если платформа старая, рассмотрите возможность обновления или использования альтернативных методов отправки (COM-объекты).

Соблюдение этих правил позволит настроить стабильную отправку документов из 1С:УТ 10.3 своим контрагентам.

← На главную