В данной заметке вы узнаете как быстро отправлять почтовое событие, например, для тестов почтовых шаблонов.
Отправка почтовых писем в Битриксе при помощи 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 ), ));
В большинстве случаев события приходят быстро и корректно :).