В 1С-Битрикс привязка своих почтовых событий при оформлении заказа, покупке, оплате и других действиях реализуется через стандартный функционал почтовых событий и обработчиков событий (событийное API). Это позволяет интегрировать кастомные процессы отправки email или изменять шаблоны уведомлений.

Вот пошаговая инструкция, как это сделать:
1. Создание собственного почтового события
Прежде чем отправлять письмо, необходимо создать новое почтовое событие:
1.1. Добавление типа события:
- Перейдите в административной панели в меню: Настройки → Почтовые события → Типы почтовых событий.
- Нажмите «Добавить тип» или используйте уже существующий.
- В форме укажите код, например:
MY_CUSTOM_ORDER_EVENT
. - Пропишите имя (например: «Уведомление о новом заказе»), описание и список параметров, которые вы будете передавать.
1.2. Настройка шаблона:
- Перейдите в Настройки → Почтовые события → Почтовые шаблоны.
- Нажмите «Добавить шаблон» и привяжите его к созданному типу.
- В самом шаблоне пропишите текст письма, используя ранее указанные параметры (например,
#ORDER_ID#
,#USER_EMAIL#
и т.д.).
Теперь ваш почтовый шаблон готов к применению.
2. Привязка события через событийное API
Чтобы отправлять письма при определённых действиях, необходимо привязать обработчики к соответствующим событиям.
2.1. Использование обработчика заказов
Для оформления заказов, оплаты, изменения статуса и других действий в модуле интернет-магазина (sale
) используются различные события. В основном это события из модуля SALE
.
Пример событий:
OnOrderAdd
— вызывается при создании нового заказа.OnSalePayOrder
— вызывается при успешной оплате заказа.OnSaleStatusOrder
— вызывается при изменении статуса заказа.
Пример кода для привязки:
// регистрируем обработчик в init.php
AddEventHandler("sale", "OnOrderAdd", "SendCustomMailOnOrderAdd");
function SendCustomMailOnOrderAdd($orderId, $fields) {
// Получение данных заказа
$arOrder = CSaleOrder::GetByID($orderId);
// Формирование параметров для почтового события
$arFields = array(
"ORDER_ID" => $orderId,
"USER_EMAIL" => $arOrder["USER_EMAIL"],
"PRICE" => $arOrder["PRICE"],
"DATE_INSERT" => $arOrder["DATE_INSERT"],
);
// Отправка почтового события
CEvent::Send("MY_CUSTOM_ORDER_EVENT", SITE_ID, $arFields);
}
В этом примере используется метод CEvent::Send
для отправки почтового события, созданного ранее.
3. Возможные события для обработки
Вы можете привязаться к разным событиям и реализовать собственные сценарии. Например:
- Оформление заказа:
OnOrderAdd
. - Оплата заказа:
OnSalePayOrder
или более новый API события для платежей\Bitrix\Sale\Payment::OnAfterPaymentPaid
. - Изменение статуса заказа:
OnSaleStatusOrder
. - Добавление продукции в корзину:
OnBeforeBasketAdd
илиOnBasketAdd
.
4. Как работать с современным API + обработка в D7
Если вы хотите использовать более современный подход через пространство имён D7, можно зарегистрировать обработчик в классе событий:
use \Bitrix\Main\EventManager;
EventManager::getInstance()->addEventHandler(
"sale",
"OnOrderAdd",
"MyNamespace\\OrderHandler::onOrderAdd"
);
class OrderHandler {
public static function onOrderAdd($orderId, $fields) {
$arOrder = CSaleOrder::GetByID($orderId);
// Формируем данные для письма
$arFields = array(
"ORDER_ID" => $orderId,
"USER_EMAIL" => $arOrder["USER_EMAIL"],
"PRICE" => $arOrder["PRICE"],
"DATE_INSERT" => $arOrder["DATE_INSERT"],
);
// Отправляем письмо
\Bitrix\Main\Mail\Event::send(array(
"EVENT_NAME" => "MY_CUSTOM_ORDER_EVENT",
"LID" => SITE_ID,
"C_FIELDS" => $arFields,
));
}
}
D7 и EventManager
предоставляют более гибкий подход для работы с событиями.
5. Тестирование
- Убедитесь, что ваше почтовое событие корректно создано в административной панельной системе.
- Проверьте логи в настройках модуля почтовых событий, чтобы убедиться, что письма отправляются.
- Для отладки используйте запись в лог-файлы или отладчики.
Теперь ваш сайт на Битриксе будет отправлять кастомные уведомления пользователям при выполнении указанных действий!