Если ваш сайт на базе 1С-Битрикс перестал отправлять письма (например, заказы, регистрационные данные или уведомления), данное руководство поможет вам систематически выявить и устранить причину неполадки.
1. Быстрая проверка: работает ли базовая функция PHP mail()?
Первым делом необходимо исключить проблемы на уровне сервера.
-
В административной панели Битрикс перейдите в раздел Настройки → Инструменты → Командная строка PHP.
-
Скопируйте и вставьте следующий код, предварительно заменив
mail_from@mail.comиmail_to@mail.comна реальные адреса:if( mail("mail_to@mail.com", "Тема письма", "Текст письма для проверки", "From: mail_from@mail.com Reply-To: mail_from@mail.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit" ) ){ echo 'Успешно отправлено!'; }else{ echo 'Отправка не удалась!'; }
-
Нажмите кнопку «Выполнить».
Результаты:
-
«Отправка не удалась!» — Проблема на стороне хостинга. Функция
mail()отключена или неправильно сконфигурирована. Необходимо обратиться в техническую поддержку вашего хостинг-провайдера. -
«Успешно отправлено!» — Базовая функция почты работает. Проблема, скорее всего, в настройках или логике самого Битрикса. Переходите к следующему шагу.
Важно: Отправка писем в Битрикс является надстройкой над функцией
mail()или пользовательской функциейcustom_mail().
2. Проверка почтовых событий и шаблонов в Bitrix
Битрикс отправляет письма через систему событий, используя методы CEvent::Send() (отложенная отправка) и CEvent::SendImmediate() (мгновенная отправка). Письма, отправленные через CEvent::Send, помещаются в таблицу b_event для дальнейшей обработки агентами или Cron.
Как проверить таблицу b_event:
-
Перейдите в Настройки → Инструменты → SQL-запрос.
-
Выполните запрос:
SELECT * FROM b_event ORDER BY id DESC LIMIT 10;
-
Обратите внимание на ключевые столбцы:
-
SUCCESS_EXEC— Статус отправки. -
DUPLICATE— Флаг отправки скрытой копии (BCC).
-
Расшифровка статусов SUCCESS_EXEC:
-
Y— Письмо успешно отправлено. -
N— Письмо еще не было обработано (ожидает в очереди). -
F— Произошла ошибка при отправке. -
P— Часть писем отправлена, часть — нет. -
0— Почтовый шаблон для данного события не найден.
3. Диагностика по статусам в b_event
Если статус N (письма в очереди)
Письма находятся в очереди и не обрабатываются.
-
Проверьте режим отправки. В файле
/bitrix/php_interface/dbconn.phpубедитесь, что нет определения константBX_CRONTABиBX_CRONTAB_SUPPORTсо значениемtrue. Если они есть — закомментируйте их (предварительно сделав резервную копию файла). -
Запустите обработку вручную. Выполните в командной строке PHP или через Cron команду:
CEvent::CheckEvents();. -
Очистите кеш. Удалите содержимое папки
/bitrix/managed_cache/через административный раздел (Настройки → Настройки продукта → Автокеширование → Очистка кеша).
Если статус F (ошибка отправки)
Битрикс сформировал письмо, но почтовый сервер его не принял.
-
Проверьте почтовый шаблон:
-
Убедитесь, что все обязательные поля (например,
#EMAIL#) заполнены и не содержат опечаток. -
Убедитесь, что шаблон активен и привязан к правильному сайту (LID).
-
-
Упростите письмо. Попробуйте временно убрать получателей в копии (BCC), отключить дублирование, включить опцию «Конвертировать 8-битные заголовки» в настройках модуля почты.
-
Проверьте логи почтового сервера. В стандартной среде Битрикс лог может находиться по пути
/home/bitrix/msmtp_default.log. Также проверьте права на файл конфигурации/home/bitrix/.msmtprc. -
Лимиты хостинга. Если вы отправляете много писем, возможно, вы превысили суточный или часовой лимит, установленный хостинг-провайдером.
Если статус 0 (шаблон не найден)
Битрикс не смог найти активный почтовый шаблон для указанного события.
-
Проверьте, существует ли почтовое событие с нужным именем (
EVENT_NAME). -
Убедитесь, что почтовый шаблон для этого события активен и привязан к нужному сайту.
4. Проверка пользовательской почтовой функции (SMTP)
Если вы используете SMTP через custom_mail (например, на базе PHPMailer), стандартная функция mail() не используется.
-
Найдите в коде сайта (часто в
init.php) объявление функцииcustom_mail. -
Временно включите debug-режим в вашем SMTP-клиенте, чтобы получить подробное описание ошибки. Пример для PHPMailer:
$mail->SMTPDebug = 2; // Вывод детального лога $mail->Debugoutput = function($str, $level) { file_put_contents('/path/to/debug.log', "$level: $str\n", FILE_APPEND); };
-
Проверьте логи на наличие ошибок аутентификации, подключения или отправки.
5. Дополнительные важные проверки
-
Доменное имя сайта. В административном разделе (Настройки → Настройки продукта → Сайты) убедитесь, что у вашего сайта корректно указано «Доменное имя». Письма часто не отправляются, если это поле пустое или содержит ошибку.
-
Спам-фильтры. Всегда проверяйте папку «Спам» на тестовом почтовом ящике. Письмо могло быть успешно отправлено, но попасть в спам из-за содержимого или настроек SPF/DKIM записей вашего домена.
Заключение
Диагностика почты в Bitrix требует последовательного подхода. Начните с проверки базовой функции mail(), затем исследуйте очередь писем и почтовые шаблоны внутри системы. Если проблема не решена, изучите логи и проверьте конфигурацию SMTP. В большинстве случаев этот метод позволяет точно определить и устранить причину неисправности.