Почему на сайте Битрикс пропали заявки и письма
Сайт на 1С-Битрикс перестал отправлять письма? Это критическая проблема, которая может стоить бизнесу десятков потерянных клиентов. Давайте разберем все возможные причины и решения.
Симптомы проблем с отправкой почты
Форма отправляется без ошибок, но письма не приходят
В админке нет записей о почтовых событиях
Ошибки "Could not instantiate mail function"
SMTP-ошибки авторизации 535 5.7.8
Быстрая диагностика: 5 шагов к решению
Шаг 1: Проверка базовой отправки через mail()
Создайте файл /local/tools/test-mail.php:
<?php
$to = 'your@email.com';
$subject = 'Тест отправки с ' . $_SERVER['HTTP_HOST'];
$message = 'Если это письмо пришло - функция mail() работает';
$headers = 'From: info@yourdomain.ru' . "\r\n";
$result = mail($to, $subject, $message, $headers);
echo $result ? 'Функция mail() работает' : 'Ошибка: mail() недоступна';
?>
Шаг 2: Тестирование SMTP-подключения
<?php
require $_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/include/phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.yandex.ru';
$mail->SMTPAuth = true;
$mail->Username = 'info@yourdomain.ru';
$mail->Password = 'app_password';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('info@yourdomain.ru', 'Test');
$mail->addAddress('your@email.com');
$mail->Subject = 'SMTP Test';
$mail->Body = 'Тестовое письмо через SMTP';
try {
$mail->send();
echo 'SMTP работает корректно';
} catch (Exception $e) {
echo 'SMTP ошибка: ' . $mail->ErrorInfo;
}
?>
Основные причины и решения
1. Неправильные настройки SMTP
Симптомы: Ошибка 535 Authentication failed
Решение:
Для Яндекс: включите 2ФА и создайте пароль приложения
Проверьте порт: 465 для SSL, 587 для TLS
Убедитесь в правильности логина (полный email)
2. Отсутствие почтового агента на сервере
Симптомы: "Could not instantiate mail function"
Решение:
# Для BitrixVM проверьте статус почтового сервиса
sudo systemctl status exim
sudo /opt/webdir/bin/bx-mail -q
3. Проблемы с DNS-записями (SPF, DKIM, DMARC)
Проверка через MXToolbox:
SPF: v=spf1 include:_spf.yandex.net ~all
DKIM: добавьте ключ из почтового сервиса
DMARC: v=DMARC1; p=none; rua=mailto:postmaster@yourdomain.ru
4. Ошибки в почтовых шаблонах
Что проверить:
Настройки → Почта и события → Почтовые шаблоны
Соответствие имен событий в коде и шаблонах
Правильность переменных (#NAME#, #EMAIL#)
Расширенная диагностика
Логирование почтовых событий
Добавьте в /bitrix/php_interface/init.php:
AddEventHandler("main", "OnBeforeEventSend", function($event, $lid, &$arFields) {
$log = date('Y-m-d H:i:s') . " | Event: $event | " .
json_encode($arFields, JSON_UNESCAPED_UNICODE) . PHP_EOL;
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/bitrix/logs/mail_debug.log",
$log, FILE_APPEND);
});
Проверка очереди отправки
# Просмотр очереди
sudo /opt/webdir/bin/bx-mail -q
# Просмотр логов
sudo tail -f /var/log/maillog
# Очистка очереди (осторожно!)
sudo exim -Mrm <message_id>
Чеклист восстановления отправки
Проверить доступность функции mail()
Настроить корректные параметры SMTP
Создать пароль приложения для Яндекс/Gmail
Добавить SPF/DKIM/DMARC записи в DNS
Проверить почтовые шаблоны в админке
Включить логирование CEvent::Send()
Проверить лимиты хостинга на отправку писем
Протестировать отправку с разных форм
Профилактика проблем с почтой
Регулярный мониторинг
Создайте крон-задачу для еженедельной проверки:
// /local/cron/mail-health-check.php
$result = mail('admin@yourdomain.ru', 'Health Check', 'Test ' . date('Y-m-d H:i'));
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/bitrix/logs/mail_health.log',
date('Y-m-d H:i:s') . ' - ' . ($result ? 'OK' : 'FAIL') . PHP_EOL, FILE_APPEND);
Рекомендуемые настройки
Для Яндекс 360:
Host: smtp.yandex.ru
Port: 465 (SSL) или 587 (TLS)
Username: полный email
Password: пароль приложения
Для надежности:
Используйте корпоративную почту с вашим доменом
Настройте резервный SMTP-сервер
Регулярно проверяйте репутацию домена
Заключение
Проблемы с отправкой писем в 1С-Битрикс решаются в 95% случаев довольно быстро.
Главное - системный подход к диагностике: от проверки базовой функции mail() до анализа почтовых шаблонов и логов.
Если после всех проверок письма всё равно не отправляются, проблема может быть на стороне хостинг-провайдера или почтового сервиса.


