Проблема периодических сбоев при отправке сообщений через почтовые сервисы Яндекса в программах 1С (особенно в 1С:Управление торговлей 11.4 - 11.5) является массовой. Ситуация часто выглядит так: письмо не уходит с первого раза, выдавая разные ошибки почтового сервера, но при повторной попытке через 10-15 секунд успешно отправляется. Проанализируем причины такого поведения и разберем пошагово, как обеспечить стабильную работу почты. В условиях нестабильной связи для контроля ушедших сообщений можно использовать расширение для сохранения истории отправки почты.
Выясним причину, по которой ошибки возникают случайным образом. Современные почтовые сервисы, такие как Яндекс, предъявляют жесткие требования к безопасности и интенсивности использования протоколов SMTP и IMAP. Основные факторы, влияющие на сбои в 1С:
Рассмотрим механизм работы 1С с почтой. Программа использует регламентное задание ПолучениеИОтправкаЭлектронныхПисем. Если письма отправляются «вручную» (например, менеджер нажал кнопку «Отправить»), 1С часто пытается инициировать соединение немедленно. Однако при массовых рассылках или большом количестве пользователей нагрузка на один почтовый ящик возрастает.
Проанализируем ситуацию: если регламентное задание срабатывает слишком часто (например, каждую минуту), сервер Яндекса может блокировать запросы. Рекомендуется установить интервал выполнения регламентного задания не чаще одного раза в 5-10 минут. Это позволит накопить письма в очереди и отправить их одной сессией, не вызывая подозрений у антиспам-системы. Для удобного изменения параметров расписания подойдет обработка для быстрого управления регламентными заданиями.
В типовых конфигурациях на базе БСП (Библиотеки стандартных подсистем) существует встроенный защитный механизм. Если при попытке соединения с сервером возникла ошибка, 1С вносит запись в регистр сведений ЗаблокированныеДляПолученияУчетныеЗаписи (или аналогичный в зависимости от версии). Пока запись находится в этом регистре, система даже не будет пытаться отправить почту, считая ящик проблемным.
Разберем, как с этим работать:
ЗаблокированныеДляПолученияУчетныеЗаписи.Посмотрим на пример кода, который можно использовать во внешней обработке для очистки таких блокировок:
НаборЗаписей = РегистрыСведений.ЗаблокированныеДляПолученияУчетныеЗаписи.СоздатьНаборЗаписей();
НаборЗаписей.Записать(); // Очищает весь регистр
Яндекс требует создания отдельных паролей для сторонних программ. Если вы используете обычный пароль, стабильность не гарантируется. Рассмотрим, как правильно настроить авторизацию:
Важно: Убедитесь, что в настройках почтового ящика на самом Яндексе (в веб-интерфейсе) в разделе «Почтовые программы» включены галочки для протоколов IMAP и SMTP.
Часто ошибки возникают из-за несовместимости протоколов шифрования. Платформа 1С использует системные библиотеки Windows для работы с SSL/TLS. Яндекс требует протокол TLS 1.2 или выше.
Проанализируем настройки порта:
В настройках УчетныеЗаписиЭлектроннойПочты в 1С обязательно установите флаг «Использовать защищенное соединение (SSL)» и проверьте, что версия платформы не ниже 8.3.18, так как в старых версиях были проблемы с современными сертификатами Яндекса.
Если вы используете почту на собственном домене (Яндекс 360 для бизнеса), отсутствие или неверная настройка записей SPF и DKIM приведет к тому, что сервер будет намеренно «отфутболивать» запросы от вашей 1С, считая их подозрительными.
Проверьте следующие параметры в панели управления вашим доменом:
include:_spf.yandex.net. Это сообщает почтовым серверам, что Яндекс имеет право отправлять почту от имени вашего домена.Если стандартные механизмы через объект ИнтернетПочта продолжают давать сбои из-за особенностей сетевой инфраструктуры или провайдера, стоит рассмотреть переход на отправку писем через HTTP-запросы к API Яндекса.
Разберем преимущество этого метода: вы не используете SMTP-протокол, который часто блокируется или проверяется антивирусами/брандмауэрами. Вместо этого 1С формирует обычный HTTPS-запрос. Это требует доработки конфигурации, но полностью решает проблему «зависания» сессий.
Пример структуры HTTP-запроса (упрощенно):
Соединение = Новый HTTPСоединение("api.mail.yandex.net", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/v1/send_email");
Запрос.УстановитьТелоИзСтроки(ДанныеПисьмаВФорматеJSON);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Для стабильной работы почты Яндекс в 1С мы рекомендуем следующий алгоритм действий: