Почтовые события в Битрикс: создание, настройка и использование
ОглавлениеЧто такое почтовые события в БитриксГде находятся почтовые событияСоздание собственного почтового событияОтправка почтового события через CEvent::SendОтправка нескольким получателямОтправка HTML-писемИспользование современных методов D7Отложенная отправка писемДобавление файлов во вложенияОтладка почтовых событийТипичные ошибкиЗаключение
Почтовые события в 1С-Битрикс являются одним из основных механизмов автоматической отправки email-сообщений пользователям и администраторам сайта. С их помощью можно отправлять уведомления о регистрации, оформлении заказа, обратной связи, восстановлении пароля и любых других действиях посетителей.
В этой статье подробно рассмотрим, что такое почтовые события в Битрикс, как их создавать, настраивать и использовать в собственных разработках.
Что такое почтовые события в Битрикс
Почтовое событие — это специальный тип уведомления, который содержит набор данных для формирования письма. При возникновении определенного действия на сайте запускается событие, которое использует один или несколько почтовых шаблонов для отправки сообщений. Схема работы выглядит следующим образом:- На сайте происходит действие.
- Вызывается почтовое событие.
- В событие передаются данные.
- Битрикс подставляет данные в шаблон письма.
- Письмо отправляется адресату.
Где находятся почтовые события
В административной панели перейдите:Настройки → Настройки продукта → Почтовые и SMS события → Типы почтовых событий
Здесь создаются типы событий.
Почтовые шаблоны находятся в разделе:
Настройки → Настройки продукта → Почтовые и SMS события → Почтовые шаблоны
Создание собственного почтового события
Допустим, необходимо отправлять уведомление после отправки заявки. Создаем новый тип события: Код события:FEEDBACK_FORM
Описание полей:
#NAME# - Имя пользователя
#PHONE# - Телефон
#EMAIL# - Email
#MESSAGE# - Сообщение
После создания события необходимо добавить почтовый шаблон.
Пример шаблона:
Тема письма:
Новая заявка с сайта
Текст письма:
Получена новая заявка.
Имя: #NAME#
Телефон: #PHONE#
Email: #EMAIL#
Сообщение:
#MESSAGE#
Отправка почтового события через CEvent::Send
Классический способ отправки письма выглядит следующим образом:<?php
$arFields = [
'NAME' => 'Иван Иванов',
'PHONE' => '+7 (999) 123-45-67',
'EMAIL' => 'user@example.com',
'MESSAGE' => 'Тестовое сообщение'
];
CEvent::Send(
'FEEDBACK_FORM',
SITE_ID,
$arFields
);
После выполнения кода Битрикс найдет шаблон с кодом события FEEDBACK_FORM и отправит письмо.
Отправка нескольким получателям
Адресатов можно указать непосредственно в шаблоне письма либо передать через параметры события. Пример:<?php
$arFields = [
'EMAIL_TO' => 'admin@site.ru, manager@site.ru',
'NAME' => 'Иван Иванов'
];
CEvent::Send(
'FEEDBACK_FORM',
SITE_ID,
$arFields
);
В шаблоне необходимо использовать переменную:
#EMAIL_TO#
Отправка HTML-писем
Для создания красивых писем можно включить HTML-формат в настройках шаблона. Пример содержимого:<h2>Новая заявка</h2>
<p><strong>Имя:</strong> #NAME#</p>
<p><strong>Телефон:</strong> #PHONE#</p>
<p><strong>Email:</strong> #EMAIL#</p>
HTML-шаблоны позволяют использовать фирменный стиль компании и адаптивную верстку.
Использование современных методов D7
В новых проектах рекомендуется использовать API D7. Пример отправки письма:<?php
use Bitrix\Main\Mail\Event;
Event::send([
'EVENT_NAME' => 'FEEDBACK_FORM',
'LID' => SITE_ID,
'C_FIELDS' => [
'NAME' => 'Иван Иванов',
'PHONE' => '+7 (999) 123-45-67',
'EMAIL' => 'user@example.com',
'MESSAGE' => 'Тестовое сообщение'
]
]);
Этот способ полностью совместим с современными версиями Битрикс.
Отложенная отправка писем
По умолчанию Битрикс помещает письма в очередь. Проверить очередь можно с помощью SQL-запроса (https://ваш.сайт/bitrix/admin/sql.php):SELECT * FROM b_event ORDER BY ID DESC
Отправка выполняется агентом:
CEvent::CheckEvents();
Это снижает нагрузку на сайт и ускоряет работу форм.
Добавление файлов во вложения
К письму можно прикреплять файлы. Пример:<?php
$fileId = CFile::SaveFile($_FILES['DOCUMENT'], 'upload');
CEvent::Send(
'FEEDBACK_FORM',
SITE_ID,
$arFields,
'N',
'',
[$fileId]
);
Пользовательский файл будет отправлен вместе с письмом.
Отладка почтовых событий
Если письмо не приходит, рекомендуется проверить:- корректность кода события;
- наличие активного шаблона;
- соответствие сайта (SITE_ID);
- журнал почтовых сообщений;
- настройки SMTP;
- системные логи сервера.