В этой статье разберем, как отправить несколько писем в Битрикс с помощью CEvent::Send. Этот метод подходит для автоматической рассылки через код, а не через админку или сервисы email-маркетинга.
Шаг 1. Создание почтового события и шаблона письма
Сначала нужно создать тип почтового события и шаблон письма. Например, назовем его BLOG_POST_BROADCAST.
-
Перейдите в Настройки → Почтовые события → Типы почтовых событий и добавьте новый.
-
В Почтовые шаблоны создайте письмо с HTML-разметкой.
Шаг 2. Подготовка тестовой страницы
Создадим страницу для выполнения скрипта:
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Массовая отправка писем");
// Код отправки писем
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");Шаг 3. Получение email-адресов пользователей
Выгрузим email-адреса из базы пользователей:
$rsUsers = CUser::GetList(($by="ID"), ($order="asc"), $filter);
while($rsUsers->NavNext(true, "f_")) {
echo "[{$f_ID}] ({$f_LOGIN}) {$f_NAME} {$f_LAST_NAME}<br>";
}Шаг 4. Отправка писем в цикле
Добавим отправку писем с динамическими параметрами:
$rsUsers = CUser::GetList(($by="ID"), ($order="asc"), $filter);
while($rsUsers->NavNext(true, "f_")) {
$arEventFields = [
"EMAIL_FROM" => "no-reply@site.com", // Отправитель
"EMAIL_TO" => $f_EMAIL, // Получатель
"SITE_NAME" => 'Название сайта',
"USER_NAME" => $f_NAME . " " . $f_LAST_NAME,
"MESSAGE_TITLE" => 'Тема письма',
"AUTHOR" => 'Команда сайта',
"MESSAGE_TEXT" => $message, // Текст письма
"MESSAGE_PATH" => 'https://site.com/blog/', // Ссылка
];
CEvent::Send("BLOG_POST_BROADCAST", "s1", $arEventFields, 'N', 173); // 173 — ID шаблона
}Важные замечания
-
Код рабочий, но неоптимизирован для больших баз (может нагружать сервер).
-
Для массовых рассылок лучше использовать специализированные сервисы (SendGrid, UniSender и др.).
-
В Битрикс есть встроенный функционал рассылок, но он ограничен.
Вывод: Этот метод подходит для разовых задач, но для регулярных рассылок стоит выбрать более надежное решение.