В данном способе будем использовать знакомый нам CEvent::Send.
Как в Битриксе отправить несколько писем скриптом?
Разберем отправку писем в цикле. Этот способ больше про код, а не про админку и выпуски рассылок. Рассмотрим в несколько шагов:
Шаг 1. Для начала создадим тип почтового события и само письмо, я назову его BLOG_POST_BROADCAST.
Шаг 2. Создадим тестовую страницу с подключением хедера и футера:
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); $APPLICATION->SetTitle("test"); // наш код require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
Шаг 3. Пройдемся в цикле по базе наших пользователей, вытащив емейл адреса:
$rsUsers = CUser::GetList(($by="ID"), ($order="asc"), $filter); $is_filtered = $rsUsers->is_filtered; while($rsUsers->NavNext(true, "f_")) : //$f_EMAIL echo "[".$f_ID."] (".$f_LOGIN.") ".$f_NAME." ".$f_LAST_NAME."
"; endwhile;
Шаг 4. Добавим в цикле динамические параметры, а текст письма уже должен быть в нашем шаблоне:
$rsUsers = CUser::GetList(($by="ID"), ($order="asc"), $filter); $is_filtered = $rsUsers->is_filtered; while($rsUsers->NavNext(true, "f_")) : //$f_EMAIL echo "[".$f_ID."] (".$f_LOGIN.") ".$f_NAME." ".$f_LAST_NAME."
"; $arEventFields = array( "EMAIL_FROM" => FORM_SENDER_EMAIL, "EMAIL_TO" => $f_EMAIL, "SITE_NAME" => 'SITE NAME', "USER_NAME" => $f_NAME." ".$f_LAST_NAME, "MESSAGE_TITLE" => 'Тема письма!', "AUTHOR" => 'Пресс-служба', "MESSAGE_TEXT" => $message, "MESSAGE_PATH" => 'https://site.com/company/personal/user/4492/blog/380/', ); CEvent::Send("BLOG_POST_BROADCAST", "s1", $arEventFields, 'N', 173); // 173 - message_id endwhile;
Вот и всё, мы передали некоторые параметры. Переменная $message – может хранить любое сгенерированное сообщение.
ПС – этому коду уже несколько лет, но для общего развития решил его всё таки опубликовать. Просьба не кидаться помидорами 🙂 . В общем-то массовая отправка писем может быть реализовано плюс-минус таким способом. Важно только помнить про то, что базы у всех разные, сервера разные и нагрузка на сервер с таким неоптимизированным кодом тоже может вырасти.
Поэтому если вам хочется на долгую перспективу использовать качественное решение, то советую посмотреть в сторону рассылочных сервисов, в битриксе даже функционал рассылок выглядит слабее, вам лишь нужно будет выгрузить базу емейлов с вашего сайта.