Битрикс — отправка почтового события на D7

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

Отправка почтовых писем в Битриксе при помощи API

Чтобы отправить почтовое событие (предварительно создав его в админке) мы используем CEvent::Send.
Код выглядит примерно так:

$arEventFields = array(
    "ID"                  => $CONTRACT_ID,
    "MESSAGE"             => $mess,
    "EMAIL_TO"            => implode(",", $EMAIL_TO),
    "ADMIN_EMAIL"         => implode(",", $ADMIN_EMAIL),
    "ADD_EMAIL"           => implode(",", $ADD_EMAIL),
    "STAT_EMAIL"          => implode(",", $VIEW_EMAIL),
    "EDIT_EMAIL"          => implode(",", $EDIT_EMAIL),
    "OWNER_EMAIL"         => implode(",", $OWNER_EMAIL),
    "BCC"                 => implode(",", $BCC),
    "ACTIVE"              => $arContract["ACTIVE"],
    "NAME"                => $arContract["NAME"],
    );
$arrSITE =  CAdvContract::GetSiteArray($CONTRACT_ID);
CEvent::Send("ADV_CONTRACT_INFO", $arrSITE, $arEventFields);

Теперь посмотрим в чем отличие если отправлять при помощи кода ядра D7:

use Bitrix\Main\Mail\Event;
Event::send(array(
  "EVENT_NAME" => "TEST",
  "LID" => "s1",
  "C_FIELDS" => array(
    "EMAIL" => $email,
    "USER_ID" => 1
  ),
));

В C_FIELDS передаем параметры, указываем сайт и имя события.

События в Битриксе приходят не сразу, что делать?

На удивление, это частый случай. Всему виной настройки вашего сайта. Но, в API есть хорошая альтернатива, событие Event::sendImmediate. Код будет выглядеть так:

use Bitrix\Main\Mail\Event;
Event::sendImmediate(array(
  "EVENT_NAME" => "TEST",
  "LID" => "s1",
  "C_FIELDS" => array(
    "EMAIL" => $email,
    "USER_ID" => 1
  ),
));

В большинстве случаев события приходят быстро и корректно :).

Если на вашем сайте необходимо настроить работу почтовых событий и писем, пишите мне в личку.

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru

Пишите, отвечу на любые вопросы.
E-mail: dmitriyribka@gmail.com

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

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