Как закалялся код...: 1С Битрикс проблема отправки писем CEvent::Send

среда, 6 августа 2014 г.

1С Битрикс проблема отправки писем CEvent::Send

1С Битрикс проблема отправки писем CEvent::Send

Пробовал отправлять собственные шаблоны писем из кода компонента в CMS 1С Битрикс.
Сразу встретился с возможными проблемами отправки.
Использую функцию CEvent->Send().

Проверка и еще раз проверка

Для начала нужно проверить правильно ли настроено событие и шаблон вашего сообщения в административной панели Битрикс Настройки > Почтовые события.
  1. Почтовое событие существует и в вашу функцию CEvent->Send() передается верное значение идентификатора типа события.
  2. Событию назначен хотя бы один почтовый шаблон.
  3. Шаблон события активен и в обязательных полях стоят правильные значения или шаблоны значений.

На хостинге проблема с функцией mail

Банальная проблема. Делаем тестовый файл, проверяем отправку, если действительно есть проблема, обращаемся к хостеру.
Пример кода:

<?php
$send_to = 'your_email@your_email_domen.ru';
$headers = 'From: sender@youdomen.ru';
if( mail($send_to ,'Тема сообщения',"Проверка функции Mail",$headers) ){
    echo 'Mail() работает!';
}else{
    echo 'Проблема с функцией Mail()!';
}
?>


Проверка состояния почтового события в БД

Функция 1С Битрикс CEvent->Send() не отправляет сообщение немедленно, а лишь создает почтовое событие в системе которое будет обработано функцией CEvent::CheckEvents(). (подробнее про Почтовую систему 1С Битрикс).
Идем в Настройки-Инструменты-SQL-запрос.

select * from b_event 
where event_name like '%your_event_name%' order by date_insert desc

Смотрим в поле SUCCESS_EXEC:
Y - успешно отправлено (передано в функцию mail, обращаемся к хостеру.
N - Не отправлялось (читаем дальше)
F - Функция MAIL вернула ошибку при отправке (обращаемся к хостеру)

Проверяем настройки отправки по cron

Если в предыдущем пункте вы видите SUCCESS_EXEC=N, то возможно в настройках продукта включена отправка сообщений по крону.
В файле /bitrix/php_interface/dbconn.php ищем константы:


define('BX_CRONTAB', true);

define('BX_CRONTAB_SUPPORT', true);

Если значение = true, нужно поставить false либо убрать данные константы.
Подробнее про данные константы 1С Битрикс можно узнать здесь.

Снова проверяем отправку.

Проверяем кэш

Если статус отправки события по прежнему = N, то в модуле управления структурой идем по пути /bitrix/managed_cache/ и чистим содержимое.

Итог


В моем случае было 2 проблемы:
  • Не работала функция mail, решилась обращением в саппорт хостинга.
  • Был неправильно настроен шаблон сообщения.

Комментариев нет:

Отправить комментарий