Как очистить очередь почты в 1С-Битрикс: Решение проблемы с зависшими письмами
Ситуация до боли знакомая каждому администратору интернет-магазина: на сервере произошел сбой почтового демона (Postfix/Sendmail) или закончилось место на диске. Ошибку быстро устранили, почта заработала.
Но на следующий день служба поддержки разрывается от жалоб — клиентам массово приходят десятки устаревших писем о статусах заказов недельной давности, сброшенные пароли и просроченные акции.
Разбираемся, почему архитектура 1С-Битрикс так работает, как экстренно остановить рассылку спама своим же клиентам и как настроить систему отправки писем, чтобы проблема больше не повторялась.
Анатомия проблемы: таблица b_event
В отличие от простых CMS, 1С-Битрикс не отправляет письма в момент совершения действия пользователем (например, при клике «Оформить заказ»). Система использует асинхронную отправку.
Событие записывается в базу данных — в служебную таблицу b_event с пометкой SUCCESS_EXEC = 'N' (не отправлено). Специальный агент на кроне периодически заходит в эту таблицу, берет пачку писем и отправляет их на SMTP-сервер.
Почему происходит массовая отправка устаревших писем?
Если SMTP-сервер становится недоступен, почтовый агент Битрикса продолжает складировать письма в таблицу b_event. Они копятся там днями и неделями. Как только связь с почтовиком восстанавливается, агент радостно отправляет всю накопленную очередь за долю секунды. Клиент получает шквал неактуальных сообщений.
Экстренная помощь: Как безопасно очистить очередь
Если вы уже поняли, что почта застряла, вам нужно удалить неактуальные письма из очереди ДО того, как вы почините SMTP-сервер.
Способ 1: Через SQL-запрос в админке (Рекомендуемый)
Это самый быстрый и безопасный метод сброса "застрявшей" очереди.
- Зайдите в административную панель Битрикса под правами администратора.
- Перейдите по пути: Настройки → Инструменты → Запрос SQL.
- Введите следующий запрос и нажмите «Выполнить»:
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-аудит вашего сайта
Оставьте заявку, и наши специалисты найдут точки роста поискового трафика.
