Как исправить ошибки при отправке электронной почты из 1С: POP3 connection broken и SMTP error 503

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

Настройка отправки электронной почты напрямую из платформ 1С — частая задача при автоматизации рассылок печатных форм, счетов, актов и уведомлений. Однако при использовании встроенных объектов ИнтернетПочта и ИнтернетПочтовыйПрофиль разработчики часто сталкиваются с ошибками подключения к почтовым серверам (в частности Mail.ru, Yandex или Gmail).

В этой статье мы подробно разберем, почему возникают ошибки «POP3 connection broken in response» и «SMTP error code 503 sender not yet given», проанализируем причины их появления и рассмотрим правильный, 100% рабочий код для отправки писем из 1С.

Ошибка 1: POP3 connection broken in response

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


Ошибка при вызове метода контекста (Подключиться): POP3 connection broken in response

Разберем причину ее возникновения. Данное сообщение означает, что почтовый сервер разорвал соединение в ответ на попытку подключения. Это происходит, когда в настройках профиля указан порт с поддержкой шифрования (например, для POP3 сервера Mail.ru указан порт 995), но в самом объекте ИнтернетПочтовыйПрофиль не включено использование SSL-соединения для POP3.

Если в профиле установлено Профиль.ИспользоватьSSLSMTP = Истина;, но забыто аналогичное свойство для POP3, сервер сбрасывает подключение. Чтобы решить проблему, необходимо добавить в код настройку шифрования POP3:

ПрофильОтправки.ИспользоватьSSLPOP3 = Истина;

В современных релизах платформы 1С:Предприятие 8.3 вместо отдельных флагов шифрования рекомендуется явно инициализировать объект защищенного соединения ЗащищенноеСоединениеOpenSSL:

ПрофильОтправки.ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();

Ошибка 2: SMTP error code 503 sender not yet given

После успешного исправления настроек SSL и подключения к серверу разработчик может столкнуться со следующей ошибкой на этапе выполнения метода Послать():


Ошибка при вызове метода контекста (Послать): Неизвестная ошибка (SMTP error code 503 503 sender not yet given)

Выясним причину этой ошибки. Код состояния SMTP 503 указывает на нарушение последовательности команд протокола передачи почты. Сервер сообщает, что команда отправки содержимого письма вызвана до того, как был передан адрес отправителя (команда MAIL FROM).

В 1С это происходит в двух случаях:

  1. В созданном объекте ИнтернетПочтовоеСообщение не заполнено свойство Отправитель. Заполнения одного лишь свойства ИмяОтправителя недостаточно!
  2. Указанный в свойстве Отправитель адрес электронной почты не совпадает с логином авторизации (ПользовательSMTP или Пользователь), под которым выполнено подключение к почтовому серверу. Публичные почтовые сервисы из соображений безопасности строго запрещают отправку писем от имени чужих ящиков.

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

Письмо.Отправитель = "ваш_логин@mail.ru";

Важное требование к безопасности: Пароли для внешних приложений

Посмотрим на ещё один критически важный нюанс. Публичные почтовые сервисы (Mail.ru, Yandex, Gmail) запрещают авторизацию сторонних программ по обычному паролю от личного кабинета.

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

Сгенерировать его можно в веб-интерфейсе вашей почты (раздел настройки безопасности -> «Пароли для внешних приложений»). Именно этот код следует вставить в настройки профиля 1С.

Полный пример рабочего кода для отправки почты через Mail.ru

Рассмотрим по шагам готовый рабочий пример отправки письма с вложением через почтовый сервис Mail.ru:


&НаСервере
Процедура ОтправитьПисьмоНаСервере()

    // 1. Создаем и настраиваем профиль подключения
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = "smtp.mail.ru";
    Профиль.ПортSMTP          = 465;
    
    Профиль.АдресСервераPOP3 = "pop.mail.ru";
    Профиль.ПортPOP3          = 995;
    
    // Авторизация на сервере
    Профиль.Пользователь     = "vash_yashchik@mail.ru";
    Профиль.Пароль           = "пароль_приложения"; // Специальный пароль внешнего приложения
    Профиль.ПользовательSMTP = "vash_yashchik@mail.ru";
    Профиль.ПарольSMTP       = "пароль_приложения";
    
    Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    
    // Включаем использование SSL
    Профиль.ИспользоватьSSLPOP3 = Истина;
    Профиль.ИспользоватьSSLSMTP = Истина;
    
    // Для новых версий платформы 8.3 рекомендуем задавать ЗащищенноеСоединение:
    // Профиль.ЗащищенноеСоединениеЗапроса = Новый ЗащищенноеСоединениеOpenSSL();

    // 2. Формируем почтовое сообщение
    Письмо = Новый ИнтернетПочтовоеСообщение;
    
    // Обязательное поле: адрес отправителя должен совпадать с логином авторизации!
    Письмо.Отправитель = "vash_yashchik@mail.ru";
    Письмо.ИмяОтправителя = "ООО Название Организации";
    
    // Добавляем получателя
    Письмо.Получатели.Добавить("client@yandex.ru");
    
    Письмо.Тема = "Счет на оплату";
    Письмо.Тексты.Добавить("Добрый день! Во вложении высылаем счет на оплату.");
    
    // При необходимости добавляем вложение
    // Письмо.Вложения.Добавить("C:\Temp\Bill.pdf");

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

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

    // Обязательно отключаемся от сервера
    Почта.Отключиться();

КонецПроцедуры

Чек-лист для проверки при возникновении проблем

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

  1. Проверьте соответствие адреса отправителя: Значение в Письмо.Отправитель должно строго совпадать с Профиль.ПользовательSMTP.
  2. Сгенерируйте пароль приложения: Не используйте личный пароль от ящика.
  3. Проверьте порты и SSL: Для SMTP порт 465 (с SSL) или 587 (с TLS). Для POP3 порт 995 (с SSL), для IMAP — 993.
  4. Сетевая доступность и антивирусы: Если код выполняется на стороне сервера 1С, убедитесь, что файрвол сервера или антивирус (например, Kaspersky) не блокируют исходящие соединения по SSL-портам и не перехватывают SSL-трафик.
← На главную