Блог разработчика 1С-Битрикс

Как настроить отправку своих почтовых событий в 1С-Битрикс при оформлении заказа

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

Отправка своих почтовых событий в при оформлении заказа

Вот пошаговая инструкция, как это сделать:

1. Создание собственного почтового события

Прежде чем отправлять письмо, необходимо создать новое почтовое событие:

1.1. Добавление типа события:

  1. Перейдите в административной панели в меню: Настройки → Почтовые события → Типы почтовых событий.
  2. Нажмите «Добавить тип» или используйте уже существующий.
  3. В форме укажите код, например: MY_CUSTOM_ORDER_EVENT.
  4. Пропишите имя (например: «Уведомление о новом заказе»), описание и список параметров, которые вы будете передавать.

1.2. Настройка шаблона:

  1. Перейдите в Настройки → Почтовые события → Почтовые шаблоны.
  2. Нажмите «Добавить шаблон» и привяжите его к созданному типу.
  3. В самом шаблоне пропишите текст письма, используя ранее указанные параметры (например, #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. Тестирование

  1. Убедитесь, что ваше почтовое событие корректно создано в административной панельной системе.
  2. Проверьте логи в настройках модуля почтовых событий, чтобы убедиться, что письма отправляются.
  3. Для отладки используйте запись в лог-файлы или отладчики.

Теперь ваш сайт на Битриксе будет отправлять кастомные уведомления пользователям при выполнении указанных действий!

Теги:  события, почта


Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Техническая поддержка

выполняется с сайтами на основе любых CMS

от 5 000 рублей
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ, используемой CMS.

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.