Блог Горошко Андрея 1C-Битрикс Отправка почты в D7: Класс Bitrix\Main\Mail\Event

Отправка почты в D7: Класс Bitrix\Main\Mail\Event

Мы уже рассматривали CEvent::Send (старый метод).

В ядре D7 появился класс Bitrix\Main\Mail\Event, который делает отправку писем более объектно-ориентированной и гибкой.

Базовая отправка (send)

Этот метод создает запись в таблице b_event, которая будет обработана агентом (отложенная отправка).

use Bitrix\Main\Mail\Event;

$result = Event::send([
    "EVENT_NAME" => "NEW_ORDER_INFO", // Тип почтового события
    "LID" => "s1",                    // ID сайта
    "C_FIELDS" => [                   // Поля для замены #FIELD#
        "ORDER_ID" => 123,
        "USER_NAME" => "Иван",
        "EMAIL_TO" => "client@example.com"
    ],
]);

if ($result->isSuccess()) {
    echo "Письмо добавлено в очередь.";
}

Немедленная отправка (sendImmediate)

Если письмо нужно отправить прямо сейчас (например, код восстановления пароля), используется метод sendImmediate. Он пытается отправить письмо через mail() (или SMTP) в рамках текущего хита.

use Bitrix\Main\Mail\Event;

$result = Event::sendImmediate([
    "EVENT_NAME" => "USER_PASS_REQUEST",
    "LID" => "s1",
    "C_FIELDS" => [
        "EMAIL" => "user@test.com",
        "CODE" => "Af329"
    ],
]);

if ($result === "Y") { // sendImmediate возвращает 'Y' или 'N' (да, это странность легаси)
    echo "Отправлено!";
}

Отправка с вложениями (FILE)

D7 позволяет удобно прикреплять файлы к письму. В массив параметров нужно передать список ID файлов из таблицы b_file.

$fileId1 = 100;
$fileId2 = 101;

Event::send([
    "EVENT_NAME" => "FEEDBACK_FORM",
    "LID" => "s1",
    "C_FIELDS" => ["TEXT" => "Сообщение с файлами"],
    "FILE" => [$fileId1, $fileId2] // Массив ID файлов
]);

Указание конкретного шаблона (MESSAGE_ID)

Если для события создано несколько шаблонов, но вы хотите использовать конкретный:

Event::send([
    "EVENT_NAME" => "NEW_USER",
    "LID" => "s1",
    "C_FIELDS" => [...],
    "MESSAGE_ID" => 25 // ID почтового шаблона
]);

Вывод:
Класс Bitrix\Main\Mail\Event — это рекомендуемый способ работы с почтой в современном коде. Он принимает параметры в виде понятного массива и возвращает стандартизированный Result (в случае send).

Bitrix\Main\Mail\Event, отправка писем D7, CEvent::Send замена, sendImmediate, почтовые события, вложения в письмо D7.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Интеграция 1С-Битрикс с 1С:ERP Управление предприятием для крупных производствИнтеграция 1С-Битрикс с 1С:ERP Управление предприятием для крупных производств

Бесшовная и отказоустойчивая интеграция сайта на 1С-Битрикс с внешними учетными системами, банками, службами доставки и маркетплейсами — основа масштабирования современного бизнеса. Услуга «Интеграция 1С-Битрикс с 1С:ERP Управление предприятием для крупных

Удалить локализацию sale.statusLang.deleteByFilterУдалить локализацию sale.statusLang.deleteByFilter

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Удалить локализацию sale.statusLang.deleteByFilter». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции. Удалить локализацию

Настройка защиты от спама в формах обратной связи через Яндекс SmartCaptcha без навязчивых картинокНастройка защиты от спама в формах обратной связи через Яндекс SmartCaptcha без навязчивых картинок

Высокая скорость загрузки сайта и безупречная серверная безопасность — обязательные требования для успешного коммерческого проекта на 1С-Битрикс. Услуга «Настройка защиты от спама в формах обратной связи через Яндекс SmartCaptcha без