В процессе эксплуатации системы 1С:Зарплата и Управление Персоналом (версия КОРП) администраторы и пользователи могут столкнуться с нестандартным поведением механизма рассылок. Рассмотрим ситуацию, когда при абсолютно идентичных настройках и графиках отпусков уведомления уходят одной части сотрудников, но игнорируют другую. При этом повторный запуск рассылки вручную может успешно доставить "застрявшие" письма.
Давайте разберемся, почему так происходит, проанализируем возможные причины сбоя и сформируем алгоритм действий для устранения этой проблемы. Мы будем опираться как на опыт коллег, так и на технические особенности работы почтовых протоколов в связке с платформой 1С.
Представим ситуацию: в системе настроена автоматическая рассылка уведомлений о начале отпуска. Наступает день Х, регламентное задание срабатывает. У нас есть три сотрудника с одинаковой датой начала отпуска по графику. Двое получают письмо счастья, а третий — нет. При этом в карточках сотрудников всё заполнено корректно, адреса электронной почты указаны верно.
Первая мысль, которая возникает при диагностике — проблема в данных или настройках расписания. Однако, если мы вручную перезапустим рассылку (или дождемся следующего срабатывания регламентного задания), письмо внезапно уходит. Это указывает на то, что логика формирования списка получателей в 1С (запрос к базе данных) работает верно. Проблема кроется на этапе транспорта сообщения.
Рассмотрим предположение, которое часто возникает у специалистов: не возникает ли "затык" при обработке нескольких сотрудников с одной датой начала отпуска? Теоретически, можно предположить, что алгоритм считает дату "обработанной" после первого письма.
Однако практика показывает, что механизм рассылок в 1С:ЗУП работает итерационно по списку получателей. Если бы проблема была в коде конфигурации, касающемся выборки дат, повторный запуск рассылки без изменения данных не дал бы результата. В нашем случае повторный запуск отправляет письма успешно. Значит, РегламентноеЗадание корректно формирует пул писем, но не может передать их все почтовому серверу за один проход.
Наиболее вероятная причина такого поведения кроется во взаимодействии 1С и почтового сервера (SMTP). Рассмотрим, как происходит отправка. 1С формирует пакет писем и начинает по очереди стучаться на почтовый сервер для их отправки. Здесь мы можем столкнуться с несколькими факторами.
Тайм-ауты и лимиты (Throttling)
Публичные почтовые сервисы (Mail.ru, List.ru, Yandex, Gmail) имеют жесткие ограничения на количество писем, отправляемых в единицу времени. Если ваша рассылка пытается отправить 50 писем за одну секунду, сервер может принять первые 10, а остальные отклонить с ошибкой временной недоступности или превышения лимита. При следующем запуске задания 1С попытается отправить только недоставленные письма, их будет меньше, и они успешно пройдут лимит.
Чтобы подтвердить технический сбой отправки, нам необходимо обратиться к главному инструменту администратора — Журнал регистрации. Именно там фиксируются ответы SMTP-сервера.
Давайте выполним следующие действия:
Журнал регистрации в режиме "Администрирование".В тексте ошибки мы можем увидеть сообщения вида:
SendAs deniedToo many messagesMessage rejected as spam — это ключевой момент в нашем расследовании.Как выяснилось в ходе анализа аналогичных ситуаций, одной из самых коварных причин является попадание писем в категорию "Спам" непосредственно на сервере отправителя или получателя. Это особенно актуально для бесплатных почтовых доменов (например, @list.ru, @mail.ru).
Почтовые роботы анализируют тему и тело письма. Слово "Отпуск" в теме, особенно в сочетании с шаблонным текстом, может триггерить спам-фильтры, которые обучены на блокировку рекламы туристических путевок и "горящих туров".
В такой ситуации почтовый сервер может:
Именно поэтому при повторной отправке (когда поток писем меньше или прошло время) блокировка может быть временно снята, и письма уходят.
Рассмотрим меры, которые необходимо предпринять для обеспечения стабильной доставки уведомлений из 1С.
Если вы используете внешние почтовые сервисы, обязательно перейдите на использование Паролей приложений. В настройках безопасности почтового ящика (в браузере) сгенерируйте специальный пароль для "Внешнего приложения" и укажите его в настройках учетной записи в 1С вместо основного пароля от аккаунта. Это повышает доверие сервера к подключению.
Это самый важный пункт для корпоративных рассылок. Чтобы письма не попадали в спам, почтовые серверы должны быть уверены, что 1С имеет право отправлять почту от имени вашего домена.
Вам (или вашим системным администраторам) необходимо:
Спам-фильтры не любят абсолютно одинаковые письма. Постарайтесь настроить шаблон уведомления в 1С:ЗУП так, чтобы тема письма была уникальной для каждого сотрудника. Например, включите в тему ФИО:
Было: "Оповещение о предстоящем отпуске"
Стало: "Иванов И.И.: Оповещение о предстоящем отпуске с 01.09"
Это значительно снизит "спам-рейтинг" вашей рассылки.
Если вы используете корпоративный почтовый сервер или арендуете хостинг, обратитесь к администраторам с просьбой добавить адрес отправителя 1С в "Белый список" (Whitelist), чтобы контент-фильтры не проверяли внутреннюю переписку на наличие рекламных стоп-слов типа "отпуск", "скидка", "выгода".
Если уведомления из 1С уходят "через раз", проблема практически всегда лежит в плоскости взаимодействия с почтовым сервером. Пошаговый план решения:
Журнал регистрации на наличие ошибок SMTP (коды 4xx и 5xx).