Как устранить ошибку SMTP «Превышено количество попыток отправки» при массовой рассылке из 1С?

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

При выполнении массовой рассылки писем из конфигурации «1С:Управление торговлей» (или совмещенных решений, таких как «БИТ.CRM») часто возникает ситуация, когда отправка первых нескольких писем проходит успешно, но затем процесс прерывается с ошибкой «Ошибка отправки SMTP. Превышено количество попыток отправки». Проанализируем причины этой проблемы и разберем практические варианты её решения.

Основные причины возникновения ошибки

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

  1. Серверные ограничения (Throttling и Rate Limiting): Даже если почтовый администратор снял явные лимиты с конкретной учетной записи, на самом почтовом сервере (например, Microsoft Exchange или Postfix) продолжают действовать защитные правила. Сервер ограничивает количество SMTP-команд за одну сессию или лимитирует общее число писем, принимаемых с одного IP-адреса за единицу времени.
  2. Зависание сессии объекта ИнтернетПочта: Если рассылка 3000 писем выполняется в одном едином цикле через одно непрерывное TCP-соединение, почтовый сервер разрывает связь по таймауту или при превышении порога допустимых операций.
  3. Сетевые экраны и антивирусная защита: Локальный файрвол или сетевой антивирус на сервере 1С может идентифицировать высокочастотную отправку пакетов по порту SMTP как спам-активность и блокировать исходящие соединения.

Способ 1. Доработка заполнения «Заданий на рассылку» в БИТ.CRM

В модуле «БИТ.CRM» существует штатный инструмент «Задания на рассылку», который из коробки умеет делить сообщения на порции и делать паузы между сериями писем. Однако стандартный интерфейс может не содержать удобного отбора контрагентов, из-за чего адресатов приходится добавлять вручную.

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

Способ 2. Пакетная отправка писем с явным переподключением

Если рассылка выполняется стандартными средствами 1С через объект ИнтернетПочта, организуем отправку сообщения порциями с обязательным закрытием соединения и паузой между блоками. Это позволяет обнулить счетчик команд SMTP-сессии на сервере.

Разберем пример кода, где отправка разбивается на пачки с паузой с помощью функции Приостановить():


// Пример логики отправки сообщений порциями
Профиль = Новый ИНТЕРНЕТПочтовыйПрофиль;
// Заполнение параметров профиля (SMTP-сервер, порт, логин, пароль)

Почта = Новый ИнтернетПочта;

Счетчик = 0;
РазмерПакета = 15; // Отправляем по 15 писем за сессию

Для Каждого Письмо Из МассивПисем Цикл
    
    // Подключаемся к серверу перед началом пачки
    Если НЕ Почта.Подключено() Тогда
        Почта.Подключить(Профиль);
    КонецЕсли;
    
    Почта.Послать(Письмо);
    Счетчик = Счетчик + 1;
    
    // При достижении лимита пачки закрываем сессию и делаем паузу
    Если Счетчик % РазмерПакета = 0 Тогда
        Почта.Отключиться();
        Приостановить(5); // Пауза 5 секунд
    КонецЕсли;
    
КонецЦикла;

Если Почта.Подключено() Тогда
    Почта.Отключиться();
КонецЕсли;

Способ 3. Организация очереди сообщений через фоновые задания

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

  1. При формировании рассылки письма записываются в специальный регистр сведений или справочник со статусом «К отправке».
  2. Создается регламентное задание, запускаемое по расписанию (например, каждые 2–3 минуты).
  3. Фоновое задание выбирает из базы небольшую порцию писем (например, 20 штук), отправляет их, меняет статус на «Отправлено» или фиксирует ошибку доставки, после чего завершает работу.

Такой подход полностью снимает проблему блокировок по IP и позволяет отправлять тысячи писем постепенно, в фоновом режиме.

Способ 4. Использование локального почтового релея (SMTP Relay)

Если менять программный код в 1С нежелательно, можно переложить задачу управления очередью на сетевую инфраструктуру:

  1. На сервере 1С или в локальной сети настраивается локальная почтовая служба (например, IIS SMTP, Postfix или Exim).
  2. 1С отправляет все 3000 писем на этот локальный релей мгновенно, без задержек и ограничений.
  3. Локальный почтовый релей принимают всю очередь на себя и самостоятельно отправляет письма на основной корпоративный или внешний SMTP-сервер с соблюдением всех лимитов, тайм-аутов и повторных попыток при сбоях.
← На главную