Отправка email-уведомлений (о регистрации, новом заказе, сообщении из формы) — базовая потребность любого сайта. В Битрикс для этого реализована гибкая система, состоящая из трех частей:
- Тип почтового события: Определяет набор переменных (#FIELD_NAME#), которые можно использовать в письме.
- Почтовый шаблон: Конкретный текст письма (тема, тело), привязанный к типу события.
- Вызов CEvent::Send(): PHP-код, который инициирует событие и передает в него конкретные значения для переменных.
Этот подход позволяет контент-менеджерам редактировать тексты писем через админку, не трогая программный код.
Шаг 1: Создание Типа почтового события
Это «контракт» между программистом и контент-менеджером.
- Перейдите в Настройки -> Настройки продукта -> Почтовые события -> Типы почтовых событий.
- Нажмите «Добавить тип».
- Тип события: Придумайте уникальный символьный код, например, CUSTOM_FEEDBACK_FORM.
- Название и Описание: Заполните поля так, чтобы было понятно, за что отвечает это событие. В «Описании» перечислите все переменные, которые вы будете передавать из кода, например:codeCode
#USER_NAME# - Имя пользователя #USER_EMAIL# - Email пользователя #MESSAGE# - Текст сообщения #SALE_EMAIL# - Email отдела продаж (из настроек)
- Сохраните.
Шаг 2: Создание Почтового шаблона
Это уже сам текст письма.
- Перейдите во вкладку «Почтовые шаблоны» на той же странице или через меню.
- Нажмите «Добавить шаблон».
- Сайт: Выберите сайт, к которому привязан шаблон.
- Тип почтового события: Выберите из списка наш тип [CUSTOM_FEEDBACK_FORM].
- От кого/Кому: Заполните адреса. Можно использовать переменные, например, поле «Кому» может быть #USER_EMAIL# или #SALE_EMAIL#.
- Тема: Новое сообщение с сайта #SITE_NAME#.
- Тело письма (сообщение):codeHtml
Здравствуйте! Новое сообщение с формы обратной связи. Имя: #USER_NAME# Email: #USER_EMAIL# Сообщение: #MESSAGE# --- Письмо сгенерировано автоматически.
- Сделайте шаблон активным и сохраните.
Шаг 3: Вызов события из PHP-кода — CEvent::Send
Теперь, когда вся настройка в админке готова, мы можем инициировать отправку письма из любого места в коде (например, из обработчика формы).
Синтаксис:
CEvent::Send(«ТИП_СОБЫТИЯ», «ID_САЙТА», $arFields);
// Данные, полученные из формы
$userName = "Иван Петров";
$userEmail = "ivan@test.com";
$message = "Это мое тестовое сообщение.";
// Получаем email администратора из настроек главного модуля
$saleEmail = COption::GetOptionString("main", "email_from");
// 1. Формируем массив полей, которые мы описали в типе события
$arEventFields = [
"USER_NAME" => $userName,
"USER_EMAIL" => $userEmail,
"MESSAGE" => $message,
"SALE_EMAIL" => $saleEmail
];
// 2. Определяем ID сайта
$siteId = "s1"; // или SITE_ID, если доступна константа
// 3. Вызываем отправку
CEvent::Send("CUSTOM_FEEDBACK_FORM", $siteId, $arEventFields);
echo "Событие для отправки письма создано.";
Что происходит после вызова CEvent::Send?
- Создается запись в таблице b_event.
- Письмо не отправляется мгновенно. Оно будет отправлено либо при следующем хите пользователя, либо при следующем запуске cron-агента, в зависимости от настроек системы.
Для немедленной отправки (например, для отладки) используется метод CEvent::SendImmediate().
Вывод:
Система почтовых событий Битрикс очень гибкая и удобная.
Разделив логику на три части (тип, шаблон, вызов), вы создаете легко поддерживаемый и масштабируемый функционал.
Программист отвечает только за вызов CEvent::Send с правильными данными, а контент-менеджер может в любой момент изменить текст письма, не привлекая разработчика.
CEvent, CEvent::Send, почтовые события, почтовые шаблоны, Битрикс почта, отправка email, NEW_USER.