Битрикс и отправка писем

Иногда по непонятным причинам не происходит отправка писем из битрикса.
А бывает, что происходит (вроде бы), но они не доходят до адресата. Единственный случай, когда не стоит этому удивляться, это когда ваш битрикс установлен на локальном сервере (у вас на пк).
Что касаемо остальных причин, то вот они:

1. Настройки хостинга либо не позволяют отправлять письма, либо стоит слишком маленький лимит на кол-во сообщений в час (а то и сутки).
Для проверки создаем в корне сайта файл testmail.php с таким кодом:

<?php
$to = 'ВАШ@ПОЧТА.ru';
$subject = 'Привет!';
$message = 'Йа письмецо';
$headers = 'From: test@'. $_SERVER['HTTP_HOST'] . "\r\n" .
    'Reply-To: test@'. $_SERVER['HTTP_HOST'] . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
if( mail($to,$subject,$message,$headers) ){
	echo 'Успешно отправлено!';
}else{
	echo 'отправка не удалась!';
}
?>

Если в течении пяти минут письмо не пришло, стоит спросить у вашего хостера: «почему?».

2. Вторая распространенная причина, это конфиг битрикса. Дело в том, что в нем есть возможность отправки писем не сразу, при выполнении запроса, а с отсрочкой. Письмо помещается в очередь на отправку и если у вас не настроен cron на периодическое выполнение файла:
/usr/bin/php -f /путь_от_корня/САЙТ.ru/bitrix/modules/main/tools/cron_events.php
то ваши письма так и останутся в очереди. К сожалению, в битриксе нет возможности посмотреть этот список. В сети можно найти советы по выполнению прямых запросов в базу, но уверяю, они позказывают не все сообщения. Поэтому я написал для себя (и делюсь с вами) скрипт, который позволяет посмотреть сообщения по типу почтового шаблона. Его нужно скачать, загрузить на сайт в директорию bitrix и открыть в браузере по ссылке http://вашсайт.ru/bitrix/mailstat.php.
bitmail
Чтобы отключить отправку по cron’у, необходимо в файле /bitrix/php_interface/dbconn.php найти параметры define('BX_CRONTAB', true); define('BX_CRONTAB_SUPPORT', true); и установить их в FALSE. Если таких записей нет, то можно их добавить, лишним не будет.

3. Blacklist. Столкнулся с этим в первый раз, но думаю как вариант, рассматривать его стоит. Важно, чтобы все отправляемые с сайта письма, содержали реально существующий адрес для ответа. Тогда в случае каких-либо проблем, все возвращаемые письма можно будет увидеть. Только благодаря этому, я недавно смог понять в чем причина не доходящих писем на одном сайте. Если бы не реальный адрес для ответа, я бы так и бился в догадках.

Удачи с битриксом, если вам довелось с ним столкнуться…

This entry was posted in PHP and tagged , , , , . Bookmark the permalink.

Всего 19 комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Можно использовать язык разметки Markdown

Protected by WP Anti Spam