Очередь исходящих писем в Битрикс может накапливать сотни и тысячи сообщений, особенно при сбоях в отправке или некорректной настройке SMTP. Это не только тормозит работу почтового модуля, но и увеличивает нагрузку на базу данных. Если в журнале событий или логах почтового модуля регулярно появляются ошибки, стоит проверить таблицу b_event и связанные с ней b_event_type, b_event_message, b_event_attachment.
Ручная очистка возможна через административную панель: раздел «Настройки» → «Почтовые события». Здесь можно выбрать старые события и удалить их выборочно. Однако при больших объемах данных этот метод становится неэффективным: интерфейс тормозит, фильтрация работает медленно, а массовое удаление может зависнуть.
Для ускоренной очистки применяется SQL-запрос к базе данных. Пример: DELETE FROM b_event WHERE DATE_INSERT < NOW() - INTERVAL 30 DAY
– удалит все письма старше 30 дней. Для полной очистки можно использовать TRUNCATE TABLE b_event
, но это приведёт к потере всех текущих записей без возможности восстановления. Перед выполнением подобных операций рекомендуется сделать резервную копию базы.
Если очередь переполнена из-за повторяющихся ошибок, стоит проверить настройки отправки, ограничить количество попыток повторной доставки и отключить ненужные уведомления. Это предотвратит повторное накопление писем и снизит нагрузку на систему.
Как найти и открыть очередь писем в административной панели Битрикс
Откройте административную панель Битрикс по адресу /bitrix/admin
и авторизуйтесь с правами администратора.
Перейдите в раздел «Настройки» → «Инструменты» → «Почтовые события» или откройте напрямую /bitrix/admin/event_log.php
для просмотра логов.
Для доступа к очереди отправки писем откройте страницу /bitrix/admin/message_admin.php?lang=ru
. Здесь отображаются письма, находящиеся в очереди на отправку.
Альтернативно, перейдите в «Настройки» → «Инструменты» → «Очередь отправки писем» или используйте адрес /bitrix/admin/phpmail_message_admin.php?lang=ru
, если установлен модуль «Почтовые сообщения».
Очередь отображается списком писем с указанием ID, типа события, получателя, даты постановки в очередь и текущего статуса. Для анализа или удаления ненужных элементов используйте фильтры и массовые действия.
Если модуль почтовых событий не установлен, перейдите в раздел «Marketplace» → «Установленные решения» и проверьте наличие модуля «main». Убедитесь, что в настройках включена опция использования очереди писем (Настройки
→ Настройки продукта
→ Почта и SMS
→ Управление очередью
).
Удаление писем из очереди через интерфейс Битрикс без доступа к базе данных
Перейдите в административную панель: Настройки → Инструменты → Почтовые события.
Откройте раздел Почтовые шаблоны, затем вкладку Очередь. Здесь отображаются все письма, ожидающие отправки.
Выделите ненужные письма с помощью флажков в левой колонке. Используйте фильтры по дате, типу события или статусу отправки для ускорения поиска.
После выбора нажмите Действия → Удалить и подтвердите удаление. Удаление выполняется мгновенно и необратимо.
Для массовой очистки установите фильтр Статус: Ошибка или Отправлено: Нет и удалите все записи одним действием.
Чтобы предотвратить повторное накопление писем, проверьте корректность настроек SMTP в Настройки → Настройки продукта → Почта и СМС, а также отключите неиспользуемые почтовые события.
Поиск таблицы почтовой очереди в базе данных Битрикс
В Битрикс таблица, содержащая почтовую очередь, называется b_event
. Она хранит все письма, поставленные в очередь на отправку. Чтобы убедиться в наличии таблицы и проверить её содержимое, используйте следующий SQL-запрос:
SHOW TABLES LIKE 'b_event';
Если таблица существует, выполните:
SELECT * FROM b_event ORDER BY ID DESC LIMIT 50;
Это отобразит последние записи очереди. Поле SUCCESS_EXEC
показывает статус отправки (NULL – не отправлено, ‘Y’ – успешно, ‘N’ – ошибка). Поле DATE_INSERT
указывает время постановки в очередь, а MESSAGE_BODY
содержит текст письма.
Дополнительно, таблица b_event
может быть связана с таблицей b_event_message
, которая содержит шаблоны писем. Для анализа конкретного шаблона используйте:
SELECT * FROM b_event_message WHERE ID = [EVENT_MESSAGE_ID];
Чтобы ускорить работу с большим объёмом данных, рекомендуется использовать индекс по полям SUCCESS_EXEC
и DATE_INSERT
. Проверить наличие индексов можно запросом:
SHOW INDEX FROM b_event;
SQL-запрос для удаления всех писем из очереди
Для полной очистки очереди писем в Битрикс используется таблица b_event
, в которой хранятся все запланированные email-события. Удаление записей из этой таблицы приведёт к удалению всех писем, ожидающих отправки.
Рекомендуемый SQL-запрос для удаления всех писем:
DELETE FROM b_event;
Если используются почтовые шаблоны с отложенной отправкой, убедитесь, что в момент выполнения запроса задачи не находятся в процессе обработки. Иначе возможны ошибки транзакций или частичное восстановление данных.
Для контроля целостности можно предварительно выполнить проверку количества писем в очереди:
SELECT COUNT(*) FROM b_event;
Если в проекте включена система логирования или аудит операций с базой данных, удаление следует выполнять в рамках согласованного окна обслуживания, чтобы избежать потери важных записей без возможности восстановления.
Удаление писем выборочно по дате или статусу через SQL
Для выборочного удаления писем из очереди Битрикс по дате или статусу используется таблица b_event, в которой хранятся письма до отправки. Прежде чем выполнить запрос, рекомендуется создать резервную копию базы данных.
Удаление писем старше определённой даты:
DELETE FROM b_event WHERE DATE_INSERT < '2025-01-01';
Удаление писем со статусом «ошибка»:
DELETE FROM b_event WHERE SUCCESS_EXEC = 'N';
Удаление писем по дате и статусу одновременно:
DELETE FROM b_event WHERE DATE_INSERT < '2025-01-01' AND SUCCESS_EXEC = 'N';
Если необходимо ограничить количество удаляемых записей, добавьте LIMIT:
DELETE FROM b_event WHERE SUCCESS_EXEC = 'N' LIMIT 500;
После удаления очистите связанные записи из таблицы b_event_attachment, чтобы удалить ненужные вложения:
DELETE FROM b_event_attachment WHERE EVENT_ID NOT IN (SELECT ID FROM b_event);
Для анализа состава очереди перед удалением можно использовать:
SELECT ID, DATE_INSERT, SUCCESS_EXEC FROM b_event WHERE DATE_INSERT < '2025-01-01';
Регулярная очистка по дате и статусу снижает нагрузку на очередь и ускоряет отправку новых сообщений.
Резервное копирование перед очисткой почтовой очереди
Перед удалением писем из очереди важно сохранить актуальное состояние базы данных. Очистка без резервной копии может привести к потере важных системных уведомлений, писем клиентам и служебной информации.
- Используйте штатный инструмент резервного копирования в административной панели Битрикс: Marketplace → Резервные копии.
- Выберите опцию резервного копирования только базы данных, чтобы ускорить процесс и снизить нагрузку.
- Убедитесь, что в настройках включена опция сохранения резервной копии на внешний FTP или облако для дополнительной безопасности.
- Проверьте наличие актуального дампа базы данных перед выполнением SQL-запросов вручную.
Альтернативный способ – создать дамп базы данных через консоль:
mysqldump -u [пользователь] -p [база_данных] > /path/to/backup.sql
- Замените [пользователь] и [база_данных] на ваши значения из
bitrix/.settings.php
. - Проверьте целостность полученного файла и его размер – некорректный дамп может быть обрезан.
Резервная копия – обязательный шаг перед выполнением запросов типа:
DELETE FROM b_event;
Или:
DELETE FROM b_event WHERE SUCCESS_EXEC='Y';
- Удаление необратимо. Без копии восстановить удалённые письма невозможно.
- После очистки проверьте корректность работы почтовых событий через Администрирование → Почтовые события.
Проверка работоспособности после удаления писем из очереди
После ручного или SQL-удаления писем из очереди необходимо убедиться, что система отправки писем в Битрикс функционирует корректно. Для этого выполните следующие шаги:
- Перейдите в Настройки > Инструменты > Почтовые события. Убедитесь, что новые события создаются при триггерах (регистрация, заказ, обратная связь).
- Откройте раздел Журнал отправки писем (
/bitrix/admin/event_log.php
) и проверьте наличие новых записей с текущим временем. Ошибки должны отсутствовать. - Отправьте тестовое письмо через Настройки > Почтовые шаблоны, используя кнопку «Отправить тестовое сообщение». Убедитесь, что оно доставлено.
- Проверьте работу CRON или агента, отвечающего за отправку почты: выполните скрипт
php -f /bitrix/modules/main/tools/cron_events.php
вручную и убедитесь, что очередь не заполняется ошибками. - Если используется SMTP, откройте лог почтового модуля (
/bitrix/php_interface/logs/smtp.log
, если включён) и проверьте успешную авторизацию и доставку.
Дополнительно проверьте загруженность почтового сервера и ограничения хостинга (например, лимиты на отправку писем в час), чтобы исключить их влияние.
Рекомендуется установить агент-монитор очереди, который будет уведомлять при достижении критического количества отложенных писем, чтобы в будущем оперативно выявлять сбои.
Вопрос-ответ:
Как вручную удалить письма из очереди в Битрикс, если они не отправляются?
Для ручной очистки очереди писем в Битрикс нужно перейти в административную часть сайта (обычно доступна по адресу вида `/bitrix/admin`) и открыть раздел «Настройки» → «Инструменты» → «Почтовые события». Там отображается список всех сообщений, ожидающих отправки. Можно выбрать нужные письма и удалить их вручную, либо отметить все и воспользоваться массовыми действиями. Этот способ подходит, если объем очереди небольшой.
Что делать, если письма накапливаются в очереди и не уходят?
В такой ситуации нужно проверить несколько моментов. Во-первых, убедитесь, что агент `CEvent::CheckEvents()` работает корректно — именно он отвечает за отправку писем из очереди. Это можно проверить в разделе «Настройки» → «Планировщик заданий (агенты)». Во-вторых, проверьте настройки почтовых шаблонов и корректность SMTP-сервера, если используется внешний. Также стоит убедиться, что не превышен лимит отправки у почтового провайдера.
Что может случиться, если просто удалить всю очередь писем без разбора?
Если удалить всю очередь, не анализируя содержимое, можно потерять важные сообщения, которые еще не были доставлены — например, уведомления пользователям, системные сообщения или письма о заказах. Это может привести к недовольству клиентов или сбоям в бизнес-процессах. Поэтому, прежде чем удалять очередь, стоит хотя бы частично просмотреть письма или настроить фильтрацию по дате, типу события или другим параметрам.