Как очистить очередь почты в 1С-Битрикс: Решение проблемы с зависшими письмами

08.04.20253 мин чтения
Мещеряков Дмитрий
Технический директор NBM-ITМещеряков Дмитрий

Ситуация до боли знакомая каждому администратору интернет-магазина: на сервере произошел сбой почтового демона (Postfix/Sendmail) или закончилось место на диске. Ошибку быстро устранили, почта заработала.

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

Разбираемся, почему архитектура 1С-Битрикс так работает, как экстренно остановить рассылку спама своим же клиентам и как настроить систему отправки писем, чтобы проблема больше не повторялась.


Анатомия проблемы: таблица b_event

В отличие от простых CMS, 1С-Битрикс не отправляет письма в момент совершения действия пользователем (например, при клике «Оформить заказ»). Система использует асинхронную отправку.

Событие записывается в базу данных — в служебную таблицу b_event с пометкой SUCCESS_EXEC = 'N' (не отправлено). Специальный агент на кроне периодически заходит в эту таблицу, берет пачку писем и отправляет их на SMTP-сервер.

Почему происходит массовая отправка устаревших писем? Если SMTP-сервер становится недоступен, почтовый агент Битрикса продолжает складировать письма в таблицу b_event. Они копятся там днями и неделями. Как только связь с почтовиком восстанавливается, агент радостно отправляет всю накопленную очередь за долю секунды. Клиент получает шквал неактуальных сообщений.


Экстренная помощь: Как безопасно очистить очередь

Если вы уже поняли, что почта застряла, вам нужно удалить неактуальные письма из очереди ДО того, как вы почините SMTP-сервер.

Способ 1: Через SQL-запрос в админке (Рекомендуемый)

Это самый быстрый и безопасный метод сброса "застрявшей" очереди.

  1. Зайдите в административную панель Битрикса под правами администратора.
  2. Перейдите по пути: Настройки → Инструменты → Запрос SQL.
  3. Введите следующий запрос и нажмите «Выполнить»:
DELETE FROM b_event WHERE SUCCESS_EXEC = 'N' OR SUCCESS_EXEC = 'E';

Что делает этот запрос? Он удаляет из базы только те письма, которые имеют статус N (не отправлено) или E (ошибка при отправке).

[!CAUTION] Частая ошибка программистов-новичков: В сети часто гуляет совет выполнить команду TRUNCATE TABLE b_event;. Никогда так не делайте! Эта команда полностью уничтожит историю всех писем, включая успешно отправленные (SUCCESS_EXEC = 'Y'). Она нужна аналитикам для отслеживания конверсий и расследования инцидентов.

Способ 2: Через командную панель PHP

Если таблица b_event разрослась до миллионов записей (такое бывает в крупных e-commerce), SQL-запрос из админки может упасть по таймауту. В этом случае используйте API Битрикса.

Перейдите в Настройки → Инструменты → Командная PHP-строка и выполните код:

CModule::IncludeModule("main");
global $DB;
$strSql = "DELETE FROM b_event WHERE SUCCESS_EXEC IN ('N', 'E')";
$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
echo "Очередь писем успешно очищена.";

Как больше никогда не возвращаться к этой проблеме?

Удаление писем из таблицы — это сбивание температуры, а не лечение болезни. Чтобы почта в 1С-Битрикс работала стабильно, необходимо правильно настроить архитектуру отправки.

1. Переведите агенты на Cron

По умолчанию в Битриксе агенты (в том числе почтовый CEvent::CheckEvents) выполняются на хитах — то есть только в тот момент, когда на сайт заходит посетитель. Если ночью на сайте нет трафика, письма о ночных заказах уйдут только утром, когда придет первый посетитель.

Перевод агентов на серверный Cron (выполнение по расписанию ОС) строго обязателен для любого коммерческого проекта. Это разгрузит фронтенд и обеспечит отправку писем секунда в секунду.

2. Используйте внешние SMTP-шлюзы (Transactional Email)

Не оправляйте рассылки напрямую через sendmail вашего сервера. IP-адрес обычного VDS очень быстро попадет в спам-базы (Spamhaus), и ваши письма начнут блокировать Mail.ru и Gmail. Подключите профессиональные сервисы транзакционных рассылок:

  • Unisender Go
  • SendPulse SMTP
  • Яндекс.Route 25

Они обеспечат доставку 99.9% писем во «Входящие», автоматически подпишут письма стандартами DKIM/SPF и дадут детальную статистику по недоставкам (Bounces), чтобы письма не копились в базе Битрикса.

Бесплатный расчет стоимости проекта

Ответьте на 4 вопроса, и мы пришлем вилку цен под ваши задачи.

1. Какой тип корпоративного сайта вам нужен?


Вывод

Архитектура отложенной отправки почты в 1С-Битрикс — это мощный инструмент, который защищает ваш сайт от зависаний при оформлении заказа. Но он требует грамотной серверной настройки.

Зависание писем — это верный сигнал того, что инфраструктура проекта требует технического аудита.

Если ваш интернет-магазин или корпоративный портал на 1С-Битрикс работает нестабильно, тормозит или выдает ошибки — обращайтесь в NBM-IT. Мы специализируемся на сложной веб-разработке и технической поддержке highload-проектов.

Бесплатный SEO-аудит вашего сайта

Оставьте заявку, и наши специалисты найдут точки роста поискового трафика.

Вам также может быть интересно

Оставьте свои контакты — мы перезвоним, разберёмся в задаче и предложим оптимальный путь. За плечами более 350 проектов, каждый из которых мы запускали с индивидуального подхода. Гарантируем экспертную консультацию в рабочее время.