Веб

Настройка автоматической рассылки новостей в Bitrix

Решение проблем с неработающей ежедневной рассылкой в Bitrix: настройка cron, шаблонов и агентов.

6 ответов 2 просмотра

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

Если ваша автоматическая рассылка новостей в Bitrix не работает, несмотря на то, что подписка и тестовые письма функционируют, проблема обычно связана с неправильной настройкой cron-задач или некорректным шаблоном письма. Рассмотрим комплексное решение этой распространенной проблемы.


Содержание


Основные проблемы автоматической рассылки новостей в Bitrix

Автоматическая рассылка новостей в Bitrix может перестать работать по нескольким причинам, даже если базовая функциональность (подписка, подтверждение) работает нормально. Самые распространенные проблемы:

Проблема №1: Отсутствие настройки cron для агентов Bitrix

По умолчанию агенты Bitrix выполняются при каждом обращении пользователя к сайту. Это означает, что если ваш сайт не посещается, автоматические задачи (включая рассылку) не будут запускаться. В результате ежедневная рассылка новостей не срабатывает, даже если все настройки сделаны правильно.

Проблема №2: Неправильный шаблон рассылки

Если тестовые письма отправляются, но в них не отображается контент новостей, это указывает на проблемы с шаблоном. В шаблоне должен использоваться специальный компонент для формирования текста письма, который корректно извлекает и форматирует новости из инфоблока.

Проблема №3: Отсутствие необходимых модулей

Модуль “Email-маркетинг” должен быть установлен и активирован. Без этого модуля функционал автоматической рассылки может быть недоступен или работать некорректно.

Проблема №4: Неправильная настройка SMTP-сервера

Даже если тестовые письма отправляются, это не гарантирует, что массовая рассылка будет работать корректно. SMTP-сервер может иметь ограничения на количество одновременных отправок или требовать дополнительной конфигурации для массовых рассылок.


Настройка шаблона рассылки для отображения контента

Для решения проблемы, когда контент новостей не отображается в шаблоне рассылки, необходимо создать специальный PHP-шаблон. Вот пошаговая инструкция:

Создание PHP-шаблона для рассылки

  1. Создайте директорию /bitrix/php_interface/subscribe/templates/your_template_name/
  2. В этой директории создайте два файла:
  • description.php
  • template.php

Файл description.php

php
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$arDescription = array(
 "NAME" => "Шаблон новостной рассылки",
 "DESCRIPTION" => "Шаблон для автоматической рассылки новостей",
 "DESCRIPTION_TYPE" => "text",
 "SORT" => 100,
 "TYPE" => "html",
 "EDITOR_TYPE" => "html",
 "IN_LIST" => "Y",
 "PATH" => "/bitrix/php_interface/subscribe/templates/your_template_name/template.php"
);
?>

Файл template.php

php
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$arMail = array(
 "SUBJECT" => "Последние новости на сайте",
 "BODY_TYPE" => "html",
 "CHARSET" => "UTF-8",
 "DIRECT_SEND" => "N",
 "FROM_FIELD" => array(
 "EMAIL" => "noreply@your-site.ru",
 "NAME" => "Администрация сайта"
 ),
 "AUTO_SEND_FLAG" => "Y",
 "AUTO_SEND_TIME" => "02:00:00"
);

$arMail["BODY"] = "
 <html>
 <head>
 <meta http-equiv='Content-Type' content='text/html; charset='.SITE_CHARSET.''>
 <title>Последние новости</title>
 </head>
 <body>
 <h2>Добрый день!</h2>
 <p>Последние новости на нашем сайте:</p>
 
 <?$APPLICATION->IncludeComponent(
 'bitrix:news.list.mail',
 '',
 array(
 'IBLOCK_TYPE' => 'news',
 'IBLOCK_ID' => 1, // ID вашего инфоблока с новостями
 'NEWS_COUNT' => '5',
 'SORT_BY1' => 'ACTIVE_FROM',
 'SORT_ORDER1' => 'DESC',
 'PREVENT_SEND_IF_NO_NEWS' => 'Y'
 ),
 false
 );?>
 
 <p>С уважением,<br>Администрация сайта</p>
 </body>
 </html>
";

return $arMail;
?>

Важные параметры компонента bitrix:news.list.mail:

  • IBLOCK_TYPE - тип инфоблока новостей
  • IBLOCK_ID - ID вашего инфоблока с новостями
  • NEWS_COUNT - количество новостей в рассылке
  • PREVENT_SEND_IF_NO_NEWS - если установлено “Y”, рассылка не будет отправляться, если нет новых новостей

Настройка шаблона в административной части

  1. Перейдите в “Настройки” → “Настройки продукта” → “Почтовые события”
  2. Выберите событие “NEWS_ADD”
  3. В разделе “Шаблоны” создайте новый шаблон
  4. Выберите созданный PHP-шаблон в поле “Тип шаблона”
  5. Сохраните изменения

Конфигурация агентов Bitrix и cron для регулярной отправки

Это ключевой этап для решения проблемы с неработающей ежедневной рассылкой. Без правильной настройки cron агенты Bitrix не будут выполняться регулярно.

Отключение встроенного механизма проверки агентов

Для начала отключите встроенный механизм проверки агентов Bitrix через административную часть:

  1. Откройте “Командную PHP строку” (в админпанели Bitrix)
  2. Выполните следующие команды последовательно:
php
COption::SetOptionString("main", "agents_use_crontab", "N");
COption::SetOptionString("main", "check_agents", "N");

Эти команды отключат встроенный механизм проверки агентов и заставят систему использовать cron для их выполнения.

Включение поддержки cron в Bitrix

Добавьте поддержку cron в конфигурационные файлы Bitrix:

  1. Откройте файл /bitrix/php_interface/dbconn.php
  2. Добавьте строку:
php
define("BX_CRONTAB_SUPPORT", true);
  1. Откройте файл /bitrix/php_interface/after_connect.php
  2. Добавьте ту же строку:
php
define("BX_CRONTAB_SUPPORT", true);

Настройка cron-задачи на сервере

Добавьте cron-задачу для периодического запуска агентов Bitrix. Задача должна выполняться каждую минуту:

* * * * * /usr/bin/wget -q -O /dev/null http://ваш-сайт/bitrix/tools/cron.php

Если wget недоступен, используйте curl:

* * * * * /usr/bin/curl -s http://ваш-сайт/bitrix/tools/cron.php > /dev/null 2>&1

Проверка настройки cron

После добавления cron-задачи проверьте, что она работает правильно. Если после выполнения команд выше отображается ошибка “Определена константа BX_CRONTAB_SUPPORT”, это означает, что cron настроен правильно, но требуется дополнительная конфигурация.

Альтернативный способ настройки cron

Если вы не хотите изменять конфигурационные файлы, можно использовать административную часть Bitrix:

  1. Перейдите в “Настройки” → “Настройки продукта” → “Настройки модулей” → “Основные модули”
  2. Найдите параметр “Использовать crontab для выполнения агентов”
  3. Установите значение “Да”
  4. Сохраните изменения

Проверка и тестирование email-рассылок

После настройки шаблона и cron необходимо проверить, что все работает правильно.

Проверка агентов Bitrix

  1. Перейдите в “Настройки” → “Система” → “Агенты”
  2. Убедитесь, что есть агент для отправки почтовых рассылок (обычно начинается с “CEvent::SendImmediate”)
  3. Проверьте, что агент установлен на выполнение с нужной периодичностью
  4. Нажмите на агенте “Проверить” - должно появиться сообщение об успешном выполнении

Тестовая рассылка

Для тестовой рассылки используйте встроенные средства Bitrix:

  1. Перейдите в “Маркетинг” → “Рассылки”
  2. Выберите нужную рассылку
  3. Нажмите “Проверить” в разделе “Тестирование”
  4. Введите email для тестовой отправки
  5. Проверьте, что письмо пришло и отображается корректно

Проверка работы cron

Чтобы убедиться, что cron работает правильно:

  1. Создайте тестовый файл в корне сайта, например, test_cron.php
  2. Добавьте в него код:
php
<?php
file_put_contents('cron_test.log', date('Y-m-d H:i:s') . "\n", FILE_APPEND);
?>
  1. Добавьте в cron задачу:
* * * * * /usr/bin/wget -q -O /dev/null http://ваш-сайт/test_cron.php
  1. Подождите несколько минут и проверьте наличие файла cron_test.log
  2. Если файл обновляется, cron работает правильно

Решение распространенных проблем с отправкой писем

Даже после всех настроек могут возникнуть проблемы. Вот самые распространенные из них и способы решения:

Проблема: Письма не отправляются

Возможные причины:

  • Отсутствие новых новостей в инфоблоке
  • Ограничения SMTP-сервера
  • Неправильная настройка агентов

Решение:

  1. Убедитесь, что есть новые новости с датой публикации в течение последних 24 часов
  2. Проверьте настройки SMTP-сервера в “Настройки” → “Настройки продукта” → “Почтовые события”
  3. Проверьте работу агентов через “Настройки” → “Система” → “Агенты”

Проблема: Письма приходят, но без контента

Возможные причины:

  • Неверный ID инфоблока в компоненте
  • Отсутствие новостей за указанный период
  • Проблемы с правами доступа

Решение:

  1. Проверьте ID инфоблока новостей в настройках компонента
  2. Убедитесь, что есть активные новости с датой публикации в течение последних 24 часов
  3. Проверьте права доступа к инфоблоку для анонимных пользователей

Проблема: Рассылка отправляется не вовремя

Возможные причины:

  • Некорректная настройка cron
  • Высокая нагрузка на сервер
  • Конфликт с другими агентами

Решение:

  1. Проверьте cron-задачу и убедитесь, что она выполняется каждую минуту
  2. Увеличьте приоритет агента рассылки в “Настройки” → “Система” → “Агенты”
  3. Отключите ненужные агенты на время теста

Проблема: Тестовые письма работают, а массовая рассылка нет

Возможные причины:

  • Разные SMTP-серверы для теста и массовой рассылки
  • Ограничения на количество одновременных отправок
  • Проблемы с правами доступа

Решение:

  1. Убедитесь, что используете один и тот же SMTP-сервер для теста и массовой рассылки
  2. Настройте очередь отправки писем
  3. Проверьте права доступа к файлам и директориям

Оптимизация производительности рассылок

После настройки базовой функциональности можно оптимизировать производительность рассылок:

Настройка очереди отправки писем

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

  1. Перейдите в “Настройки” → “Настройки продукта” → “Почтовые события”
  2. В разделе “Настройки отправки” установите:
  • “Использовать очередь отправки” - “Да”
  • “Количество писем за один запуск” - 50-100
  • “Интервал между запусками” - 5-10 минут

Оптимизация работы агентов

Для более эффективной работы агентов:

  1. В “Настройки” → “Система” → “Агенты” нажмите “Показать все”
  2. Отсортируйте агенты по времени выполнения
  3. Убедитесь, что агент рассылки имеет высокий приоритет
  4. Отключите ненужные агенты во время пиковых нагрузок

Мониторинг работы рассылок

Настройте мониторинг для отслеживания работы рассылок:

  1. Создайте лог-файл для записи информации о рассылках
  2. Добавьте в шаблон письма код для отслеживания доставки
  3. Используйте встроенные средства Bitrix для анализа рассылок

Безопасность рассылок

Обеспечьте безопасность рассылок:

  1. Используйте SSL для SMTP-соединения
  2. Настройте SPF и DKIM записи для домена
  3. Регулярно обновляйте Bitrix до последних версий

Источники

  1. Веб-студия АКРИТ — Создание автоматической рассылки в Bitrix: https://www.acrit-studio.ru/pantry-programmer/knowledge-base/forum_admin/forum_cm/subscribe/subscribe_dev/sozdanie-avtomaticheskoy-rassylki/

  2. SenDev — Создание и настройка новостной рассылки в 1С-Битрикс: https://sendev.ru/blog/1c-bitrix/sozdanie-i-nastroyka-novostnoy-rassylki-v-1s-bitriks/

  3. VecDev — Настройка выполнения агентов Bitrix на cron: https://vecdev.ru/blog/bitriks/nastroyka-vypolneniya-agentov-bitriks-na-cron-reshenie-problemy-nerabotayushchikh-agentov/

  4. Рег.ру — Выполнение агентов на cron в Bitrix: https://help.reg.ru/support/hosting/cms/vypolneniye-agentov-na-cron-v-bitrix

  5. Bitrix Boost — Запуск агентов 1С Битрикс по cron: https://btrxboost.com/help/3305


Заключение

Автоматическая рассылка новостей в Bitrix может перестать работать по нескольким причинам, от неправильной настройки cron до ошибок в шаблоне письма. Для решения проблемы необходимо:

  1. Проверить и настроить cron-задачи для регулярного выполнения агентов Bitrix
  2. Создать правильный PHP-шаблон для рассылки с использованием компонента bitrix:news.list.mail
  3. Настроить SMTP-сервер и модуль “Email-маркетинг”
  4. Провести тщательное тестирование с использованием встроенных средств Bitrix

Следуя этим шагам, вы сможете восстановить функциональность автоматической рассылки и обеспечить регулярную доставку новостей вашим подписчикам.

Для решения проблемы с автоматической рассылкой новостей в Bitrix необходимо создать PHP-шаблон в директории bitrix/php_interface/subscribe/templates/. Структура шаблона должна включать файлы description.php и template.php. В template.php используется компонент для формирования текста письма, который должен возвращать массив с параметрами письма: SUBJECT, BODY_TYPE, CHARSET, DIRECT_SEND, FROM_FIELD, AUTO_SEND_FLAG и AUTO_SEND_TIME. Тестирование рассылки проводится через функцию “Проверить” в админпанели.

В

Для ежедневной рассылки новостей в Bitrix убедитесь, что модуль «Email-маркетинг» установлен и настроен SMTP-сервер. В шаблоне письма обязательно включите компонент news.list.mail с корректными параметрами, особенно IBLOCK_ID для инфоблока новостей и PREVENT_SEND_IF_NO_NEWS=“Y”. Настройте cron-задачу для запуска агентов Bitrix, иначе периодические письма будут отправляться только при посещении сайта пользователями.

VecDev / Студия разработки сайтов на 1С-Битрикс

Для настройки выполнения агентов Битрикс на cron через административную часть выполните команды в “Командной PHP строке”: COption::SetOptionString(“main”, “agents_use_crontab”, “N”); и COption::SetOptionString(“main”, “check_agents”, “N”). Эти команды отключают встроенный механизм проверки агентов и заставляют систему использовать cron для их выполнения. После этого добавьте задачу в crontab сервера для периодического запуска cron.php.

Рег.ру / Справочный центр хостинг-провайдера

Агенты в Bitrix - это PHP-скрипты для автоматизации задач, таких как отправка почтовых рассылок. По умолчанию они выполняются при каждом обращении пользователя к сайту, что может вызывать задержки. Для решения этой проблемы настройте выполнение агентов через cron - стандартный Unix-утилиту для периодического выполнения команд. При этом агенты выполняются независимо от посещаемости сайта, что позволяет избежать нагрузки на сервер при высокой посещаемости.

Для запуска агентов 1С Битрикс по cron добавьте в файл /bitrix/php_interface/dbconn.php строку define(“BX_CRONTAB_SUPPORT”, true); и также добавьте эту строку в файл /bitrix/php_interface/after_connect.php. После этого настройте cron-задачу с командой: * * * * * /usr/bin/wget -q -O /dev/null http://ваш-сайт/bitrix/tools/cron.php. Если после изменений отображается ошибка “Определена константа BX_CRONTAB_SUPPORT”, это означает, что cron настроен правильно, но требуется дополнительная конфигурация.

Авторы
В
Разработчик 1С-Битрикс
Источники
Веб-студия разработки на 1С-Битрикс
SenDev / Сервис разработки и поддержки сайтов на 1С-Битрикс
Сервис разработки и поддержки сайтов на 1С-Битрикс
VecDev / Студия разработки сайтов на 1С-Битрикс
Студия разработки сайтов на 1С-Битрикс
Рег.ру / Справочный центр хостинг-провайдера
Справочный центр хостинг-провайдера
Хостинг-провайдер для 1С-Битрикс
Проверено модерацией
НейроОтветы
Модерация