Как устранить нестабильную работу и ошибки при отправке писем через Яндекс Почту в 1С

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

Проблема периодических сбоев при отправке сообщений через почтовые сервисы Яндекса в программах 1С (особенно в 1С:Управление торговлей 11.4 - 11.5) является массовой. Ситуация часто выглядит так: письмо не уходит с первого раза, выдавая разные ошибки почтового сервера, но при повторной попытке через 10-15 секунд успешно отправляется. Проанализируем причины такого поведения и разберем пошагово, как обеспечить стабильную работу почты. В условиях нестабильной связи для контроля ушедших сообщений можно использовать расширение для сохранения истории отправки почты.

Анализ причин нестабильной связи с серверами Яндекса

Выясним причину, по которой ошибки возникают случайным образом. Современные почтовые сервисы, такие как Яндекс, предъявляют жесткие требования к безопасности и интенсивности использования протоколов SMTP и IMAP. Основные факторы, влияющие на сбои в 1С:

  1. Лимиты на количество одновременных соединений: Если в 1С настроено несколько фоновых заданий, которые одновременно пытаются проверить почту или отправить пачку счетов, Яндекс может воспринять это как атаку или попытку рассылки спама и временно разорвать сессию.
  2. Антиспам-фильтры: При частом обращении к серверу с одного IP-адреса включается «серый список» (greylisting), который заставляет клиента повторить запрос через некоторое время. Именно поэтому повторная отправка в 1С часто проходит успешно.
  3. Переход на обязательные пароли приложений: Использование основного пароля от учетной записи Яндекс ID часто ведет к непредсказуемым ошибкам аутентификации в сторонних приложениях.

Решение 1. Настройка частоты регламентных заданий

Рассмотрим механизм работы 1С с почтой. Программа использует регламентное задание ПолучениеИОтправкаЭлектронныхПисем. Если письма отправляются «вручную» (например, менеджер нажал кнопку «Отправить»), 1С часто пытается инициировать соединение немедленно. Однако при массовых рассылках или большом количестве пользователей нагрузка на один почтовый ящик возрастает.

Проанализируем ситуацию: если регламентное задание срабатывает слишком часто (например, каждую минуту), сервер Яндекса может блокировать запросы. Рекомендуется установить интервал выполнения регламентного задания не чаще одного раза в 5-10 минут. Это позволит накопить письма в очереди и отправить их одной сессией, не вызывая подозрений у антиспам-системы. Для удобного изменения параметров расписания подойдет обработка для быстрого управления регламентными заданиями.

Решение 2. Работа с регистром заблокированных учетных записей

В типовых конфигурациях на базе БСП (Библиотеки стандартных подсистем) существует встроенный защитный механизм. Если при попытке соединения с сервером возникла ошибка, 1С вносит запись в регистр сведений ЗаблокированныеДляПолученияУчетныеЗаписи (или аналогичный в зависимости от версии). Пока запись находится в этом регистре, система даже не будет пытаться отправить почту, считая ящик проблемным.

Разберем, как с этим работать:

  1. Найдите через «Все функции» (или «Функции для технического специалиста») регистр сведений ЗаблокированныеДляПолученияУчетныеЗаписи.
  2. Если вы видите там свою учетную запись, значит, 1С временно прекратила попытки обмена с ней.
  3. Для решения проблемы можно программно очищать этот регистр перед началом массовой рассылки или сократить время блокировки в коде.

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


НаборЗаписей = РегистрыСведений.ЗаблокированныеДляПолученияУчетныеЗаписи.СоздатьНаборЗаписей();
НаборЗаписей.Записать(); // Очищает весь регистр

Решение 3. Использование специальных паролей приложений

Яндекс требует создания отдельных паролей для сторонних программ. Если вы используете обычный пароль, стабильность не гарантируется. Рассмотрим, как правильно настроить авторизацию:

  1. Зайдите в настройки Яндекс ID в раздел «Безопасность».
  2. Выберите пункт «Пароли приложений».
  3. Создайте новый пароль, выбрав тип «Почта».
  4. Полученный 16-значный код вставьте в настройки учетной записи в 1С вместо основного пароля.

Важно: Убедитесь, что в настройках почтового ящика на самом Яндексе (в веб-интерфейсе) в разделе «Почтовые программы» включены галочки для протоколов IMAP и SMTP.

Решение 4. Настройка TLS и выбор порта

Часто ошибки возникают из-за несовместимости протоколов шифрования. Платформа 1С использует системные библиотеки Windows для работы с SSL/TLS. Яндекс требует протокол TLS 1.2 или выше.

Проанализируем настройки порта:

  1. Порт 465 (SSL/TLS): Рекомендуется для 1С как наиболее стабильный. Соединение сразу устанавливается защищенным.
  2. Порт 587 (STARTTLS): Часто вызывает проблемы «рукопожатия» (handshake), так как соединение начинается как незащищенное и только потом переходит в защищенный режим.

В настройках УчетныеЗаписиЭлектроннойПочты в 1С обязательно установите флаг «Использовать защищенное соединение (SSL)» и проверьте, что версия платформы не ниже 8.3.18, так как в старых версиях были проблемы с современными сертификатами Яндекса.

Решение 5. Настройка DNS-записей (SPF и DKIM)

Если вы используете почту на собственном домене (Яндекс 360 для бизнеса), отсутствие или неверная настройка записей SPF и DKIM приведет к тому, что сервер будет намеренно «отфутболивать» запросы от вашей 1С, считая их подозрительными.

Проверьте следующие параметры в панели управления вашим доменом:

Решение 6. Переход на API как радикальный метод

Если стандартные механизмы через объект ИнтернетПочта продолжают давать сбои из-за особенностей сетевой инфраструктуры или провайдера, стоит рассмотреть переход на отправку писем через HTTP-запросы к API Яндекса.

Разберем преимущество этого метода: вы не используете SMTP-протокол, который часто блокируется или проверяется антивирусами/брандмауэрами. Вместо этого 1С формирует обычный HTTPS-запрос. Это требует доработки конфигурации, но полностью решает проблему «зависания» сессий.

Пример структуры HTTP-запроса (упрощенно):


Соединение = Новый HTTPСоединение("api.mail.yandex.net", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/v1/send_email");
Запрос.УстановитьТелоИзСтроки(ДанныеПисьмаВФорматеJSON);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);

Заключение и рекомендации

Для стабильной работы почты Яндекс в 1С мы рекомендуем следующий алгоритм действий:

  1. Перейдите на использование паролей приложений.
  2. Установите в настройках 1С порт 465 и включите SSL.
  3. Увеличьте таймаут соединения в почтовом профиле 1С до 60-120 секунд.
  4. Настройте регламентное задание на отправку не чаще чем раз в 5 минут.
  5. При массовых рассылках убедитесь, что ваш аккаунт не является бесплатным с жесткими лимитами, и рассмотрите переход на тарифы Яндекс 360 для бизнеса, где ограничения на количество писем значительно выше.
← На главную