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

Руководство по работе с почтовой системой в 1С-Битрикс

Почтовая система в 1С-Битрикс является важным инструментом для отправки уведомлений и сообщений с вашего сайта. В этом руководстве подробно рассмотрим, как настроить почтовую систему, создать почтовые события, шаблоны и проверять статус отправки сообщений.

Работа с почтовой системой в 1С-Битрикс

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

Тип почтового события определяет структуру и содержание сообщений, которые будут отправляться с сайта. Каждый тип почтового события соответствует определённой задаче, например, уведомление о изменении статуса товара или отправка письма о подтверждении регистрации.

Пример кода для создания типа почтового события:


    <?php
    $eventType = new CEventType;
    $eventType->Add(array(
        "EVENT_NAME"  => "USER_REGISTRATION", // Название события
        "NAME"        => "Регистрация нового пользователя", // Описание события
        "LID"         => "ru", // Языковая версия
        "DESCRIPTION" => "
            #USER_NAME# - имя пользователя
            #USER_EMAIL# - email пользователя
        "
    ));
    ?>
    

В этом примере создается тип почтового события USER_REGISTRATION, которое будет использоваться для отправки уведомлений при регистрации нового пользователя.

2. Создание почтового шаблона

Почтовые шаблоны определяют структуру письма, которое будет отправлено пользователю. Каждый шаблон может быть связан с определённым типом почтового события.

Пример кода для создания почтового шаблона:


    <?php
    $templateFields = array(
        "ACTIVE"      => "Y", // Активность шаблона
        "EVENT_NAME"  => "USER_REGISTRATION", // Тип почтового события
        "LID"         => array("ru", "en"), // Языки
        "EMAIL_FROM"  => "no-reply@site.ru", // От кого
        "EMAIL_TO"    => "#USER_EMAIL#", // Кому
        "BCC"         => "", // Скрытая копия
        "SUBJECT"     => "Подтверждение регистрации", // Тема письма
        "BODY_TYPE"   => "text", // Тип тела письма
        "MESSAGE"     => "
            Здравствуйте, #USER_NAME#!
            Благодарим за регистрацию на нашем сайте.
        "
    );

    $eventMessage = new CEventMessage;
    $eventMessage->Add($templateFields);
    ?>
    

Здесь создается почтовый шаблон для события USER_REGISTRATION, который отправляет письмо на email пользователя с подтверждением регистрации.

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

Почтовое событие отвечает за отправку письма по заданному шаблону. Для отправки события используется функция CEvent::Send.

Пример кода для отправки почтового события:


    <?php
    $eventFields = array(
        "USER_NAME"  => "Иван Иванов", // Имя пользователя
        "USER_EMAIL" => "user@example.com" // Email пользователя
    );

    CEvent::Send("USER_REGISTRATION", "ru", $eventFields);
    ?>
    

В этом примере отправляется событие USER_REGISTRATION на указанный email с данными о пользователе.

4. Проверка статуса отправки писем

Когда письмо отправляется, информация о его статусе сохраняется в таблице b_event. Это позволяет отслеживать, были ли сообщения успешно отправлены, и выявлять проблемы при отправке.

Чтобы проверить статус отправки писем, используйте SQL-запрос:


    SELECT * FROM b_event ORDER BY DATE_EXEC DESC;
    

Статусы отправки сообщений:

  • SUCCESS_EXEC = Y — сообщение успешно отправлено.
  • SUCCESS_EXEC = N — событие не обработано, письмо не отправлено.
  • SUCCESS_EXEC = 0 — не найден почтовый шаблон.
  • SUCCESS_EXEC = F — ошибка при отправке письма, необходимо проверить логи.
  • SUCCESS_EXEC = P — часть писем успешно отправлена, часть — нет.

5. Проблемы с отправкой почты

Если письма не доходят до получателя, рекомендуется проверить следующие моменты:

  1. Убедитесь, что в таблице b_event нет накопленных неподтвержденных сообщений.
  2. Используйте запрос для очистки очереди сообщений, если возникли проблемы с отправкой:

    DELETE FROM b_event;
    

Внимательно проверьте настройки почтового сервера, особенно если используется SMTP. Ошибки в поле FROM могут привести к тому, что письма не будут отправляться.

6. Очистка очереди сообщений

Если после исправления ошибок с почтой остаются непродолженные письма в очереди, которые могут быть отправлены пользователям (например, письма старых заказов), их нужно удалить. Для этого используйте SQL-запрос:


    DELETE FROM b_event;
    

Этот запрос удалит все сообщения, которые ещё не были отправлены, и предотвратит их отправку пользователям.

Заключение

Система почты в 1С-Битрикс предоставляет мощные инструменты для управления отправкой писем через почтовые события и шаблоны. Однако для корректной работы почтовой системы важно тщательно настроить все компоненты, проверять статус отправленных сообщений и устранять возможные ошибки на стороне сервера.

Понимание работы почтовых событий и шаблонов поможет вам эффективно использовать возможности 1С-Битрикс и обеспечить бесперебойную отправку уведомлений вашим пользователям.

Теги: почтовая система, настройка почты, почтовые события, шаблоны писем, отправка уведомлений


Валерий Макеев
10.09.2025 17:21
Создаем почтовое событие для уведомления администратора о новом заказе и отправляем тестовое сообщение.
Код
<?php
// Создание типа события для уведомления о заказе
$eventType = new CEventType;
$eventType->Add([
    "EVENT_NAME" => "NEW_ORDER_NOTIFICATION",
    "NAME" => "Уведомление о новом заказе",
    "LID" => "ru",
    "DESCRIPTION" => "#ORDER_ID# - Номер заказа\n#ORDER_DATE# - Дата заказа"
]);

// Создание шаблона письма
$eventMessage = new CEventMessage;
$eventMessage->Add([
    "ACTIVE" => "Y",
    "EVENT_NAME" => "NEW_ORDER_NOTIFICATION",
    "LID" => "s1",
    "EMAIL_FROM" => "#SITE_EMAIL#",
    "EMAIL_TO" => "admin@example.com",
    "SUBJECT" => "Новый заказ №#ORDER_ID#",
    "BODY_TYPE" => "html",
    "MESSAGE" => "<p>Поступил новый заказ №#ORDER_ID# от #ORDER_DATE#</p>"
]);

// Отправка уведомления
CEvent::Send("NEW_ORDER_NOTIFICATION", "s1", [
    "ORDER_ID" => "12345",
    "ORDER_DATE" => date("d.m.Y H:i"),
    "SITE_EMAIL" => "noreply@example.com"
]);
?>

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

Разработка корпоративного сайта

от 7 дней

от 40 000 рублей

Разработка сайта без системы оплаты заказов через корзину

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Участие в проекте

привлечение в проект на part-time основе

от 30 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная

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

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

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

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