Автоматизация
Внедрение битрикс24 бесплатно
При покупке лицензии у меня
Подробнее
Назад

Битрикс как добавить подписчика через API

Битрикс как добавить подписчика через API
Битрикс как добавить подписчика через API

Если вам нужно добавить подписчика вручную (например, через кастомную форму) и сразу активировать подписку без подтверждения по email, используйте API модуля subscribe в 1С-Битрикс.

Основной код

Создайте обработчик формы (например, subscribe.php):

<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

global $USER, $APPLICATION;

// Проверяем CSRF-токен и наличие email
if (!check_bitrix_sessid() || empty($_POST['email'])) {
    die('Ошибка запроса');
}

// Подключаем модуль подписки
if (!CModule::IncludeModule('subscribe')) {
    die('Модуль подписки не доступен');
}

// Валидация email
$email = trim($_POST['email']);
if (!check_email($email)) {
    die('Неверный формат email');
}

// Получаем ID рубрик (если переданы, иначе берем по умолчанию)
$rubrics = !empty($_POST['RUB_ID']) && is_array($_POST['RUB_ID']) 
    ? $_POST['RUB_ID'] 
    : [1]; // ID рубрики по умолчанию

// Проверяем, не подписан ли email уже
$existingSub = CSubscription::GetList([], ["EMAIL" => $email])->Fetch();
if ($existingSub) {
    die('Этот email уже подписан');
}

// Параметры подписки
$subscribeFields = [
    "USER_ID"      => $USER->IsAuthorized() ? $USER->GetID() : false,
    "FORMAT"       => "html", // или "text"
    "EMAIL"        => $email,
    "ACTIVE"      => "Y",     // сразу активна
    "CONFIRMED"   => "Y",     // без подтверждения
    "SEND_CONFIRM" => "N",    // не отправлять письмо
    "RUB_ID"      => $rubrics // массив ID рубрик
];

// Добавляем подписчика
$subscr = new CSubscription;
$ID = $subscr->Add($subscribeFields);

if ($ID > 0) {
    CSubscription::Authorize($ID);
    echo 'Подписка успешно оформлена!';
} else {
    // Выводим ошибку, если что-то пошло не так
    if ($ex = $APPLICATION->GetException()) {
        echo 'Ошибка: ' . $ex->GetString();
    }
}
?>

Как это работает?

  1. Проверка CSRF (check_bitrix_sessid()) — защита от подделки запросов.

  2. Валидация email (check_email()) — проверка корректности адреса.

  3. Проверка дублей (CSubscription::GetList()) — избегаем повторной подписки.

  4. Настройки подписки:

    • ACTIVE: "Y" — подписка сразу активна.

    • CONFIRMED: "Y" — не требует подтверждения.

    • SEND_CONFIRM: "N" — не отправляет письмо с подтверждением.

  5. Гибкие рубрики — можно передавать массив RUB_ID из формы.

Дополнительные улучшения

1. AJAX-обработка

Для современных сайтов лучше использовать AJAX:

javascript


fetch('/subscribe.php', {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: `email=${encodeURIComponent(email)}&sessid=${BX.bitrix_sessid()}`
})
.then(response => response.text())
.then(data => alert(data));

2. Использование REST API

Если сайт работает через REST (например, мобильное приложение), можно использовать:

$result = \Bitrix\Main\Mail\Sender::subscribe($email, $rubrics);
if (!$result->isSuccess()) {
    print_r($result->getErrors());
}

3. Логирование ошибок

Добавьте запись в лог при ошибках:

if ($ID <= 0 && $ex) {
    AddMessage2Log($ex->GetString(), "subscribe");
}

Вывод

Этот метод позволяет:

  • Добавлять подписчиков без подтверждения
  • Контролировать дубли
  • Гибко настраивать рубрики
  • Защищаться от CSRF

Используйте этот код в своих формах, но помните о GDPR — убедитесь, что пользователь согласен на рассылку!

Получите план улучшений для вашего сайта — бесплатно
Оставьте заявку и получите аудит сайта по ключевым параметрам, включая скорость, безопасность и SEO-ошибки, которые мешают сайту привлекать клиентов.
Заказать аудит
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи