
Настройте форум для публикации отзывов и создайте почтовое событие.
В административной части сайта перейдите в настройки списка форумов: Рабочий стол → Сервисы → Форумы → Список форумов. Выберите форум, настроенный на вашем сайте на публикацию и хранение отзывов (скорее всего, он будет в списке единственный) и войдите в режим редактирования через кнопку «гамбургер» и пункт «Изменить». Если у вас не создано ни одного форума для отзывов, создайте его с помощью инструкции.

Переключитесь на вкладку «Настройки». В поле «Модерация» поставьте галочку в пункте «Премодерируемый».

Это позволит публиковать отзывы не напрямую, а после одобрения администратора.
Создаем для начала новый тип почтового события.
Перейдите в Рабочий стол → Настройки → Настройки продукта → Почтовые события → Типы почтовых событий. Нажмите кнопку «Добавить тип».

Тип почтового события пропишите как NEW_ITEM_REVIEW. В описание вставьте следующий код:
#ITEM_NAME# – товар получивший отзыв
#AUTHOR_NAME# – автор
#POST_DATE# – дата
#POST_MESSAGE# – отзыв
#PATH2ITEM# – относительная ссылка

Теперь создаем новый почтовый шаблон для этого события.
Перейдите в Рабочий стол → Настройки → Настройки продукта → Почтовые события → Почтовые шаблоны. Нажмите кнопку «Добавить шаблон».

В настройках нового шаблона пропишите следующие настройки:
Выберите сайт, для которого будет действовать шаблон, если у вас несколько сайтов на одной платформе.
Выберите тип почтового события из списка. В нашем случае это новый отзыв к товару (так мы назвали новое почтовое событие) [NEW_ITEM_REVIEW] (этот тип мы присвоили событию).
Пропишите в полях «От кого» и «Кому» соответствующие адреса электронной почты или специальные коды:
от кого: #DEFAULT_EMAIL_FROM#
кому: #DEFAULT_EMAIL_FROM#.
В случае с кодами адреса будут генерироваться автоматически в зависимости от настроек сайта и внесенных данных
Пропишите с поле «Тема» следующую фразу: #SITE_NAME# и новый отзыв к товару #ITEM_NAME#.
Вместо кодов в готовом письме пропишутся название сайта и название товара
В поле «Сообщение» вставьте следующий текст:
Информационное сообщение с сайта #SITE_NAME#
<br>
<hr>
Добавлен новый отзыв к товару:
<br>
#ITEM_NAME#
<hr>
Содержание:
<br>
автор: #AUTHOR_NAME#
<br>
отзыв: #POST_MESSAGE#
<br>
ссылка на товар: https://#SERVER_NAME##PATH2ITEM#

Далее сформируйте код для вставки в файл.
<?function notifyNewItemFeedback($ID, $arFields){
ob_start();
$res = CIBlockElement::GetList(
array(),
array(
'IBLOCK_ID' => id_инфоблока_каталога,
'PROPERTY_FORUM_TOPIC_ID' => $arFields["TOPIC_ID"]
),
false,
false,
array('*', 'IBLOCK_ID', 'ID', 'NAME', 'PROPERTY_FORUM_TOPIC_ID', 'SECTION_ID', 'SECTION', 'SECTIONS')
);
if($ar_res = $res->GetNext()){
var_dump(date('d.m.Y H:i:s'));
echo 'найден товар '.$ar_res['NAME'];
$TYPE_MAIL_EVENT = 'NEW_ITEM_REVIEW';
var_dump($ar_res);
$arMail = array(
'ITEM_NAME' => $ar_res['NAME'],
'AUTHOR_NAME' => $arFields['AUTHOR_NAME'],
'POST_DATE' => date('d.m.Y H:i:s'),
'POST_MESSAGE' => $arFields['POST_MESSAGE'],
'PATH2ITEM' => $ar_res['DETAIL_PAGE_URL'],
);
var_dump($arMail);
$ID_MAIL_EVENT = id_почтового_шаблона;
$ok = CEvent::Send($TYPE_MAIL_EVENT, "id_сайта", $arMail, $ID_MAIL_EVENT);
if ($ok){
echo 'Сообщение отправлено';
}
else{
'Сообщение не отправлено '.$ok;
}
}
else{
echo 'Элемент не найден.';
$dump = ob_get_clean();
if (!empty($ok)){
return true;
}
else{
$filename = dirname(__FILE__).'/dump.txt';
if (!file_exists($filename)){
$f = fopen($filename, 'w+');
fclose($f);
}
file_put_contents($filename, $dump);
}
}
}
AddEventHandler("forum", "onAfterMessageAdd", "notifyNewItemFeedback"); ?>
Где:

Чтобы узнать ID инфоблока каталога, перейдите в Рабочий стол → Контент → Инфоблоки → Типы инфоблоков → Каталог. На вкладке «Инфоблок» вы найдете значение ID. Это значение и нужно вставить в код. В нашем случае ID = 13.

ID почтового шаблона, как мы выяснили ранее, равен 78.
Новый код примет следующий вид:
<? function notifyNewItemFeedback($ID, $arFields){
ob_start();
$res = CIBlockElement::GetList(
array(),
array(
'IBLOCK_ID' => 13,
'PROPERTY_FORUM_TOPIC_ID' => $arFields["TOPIC_ID"]
),
false,
false,
array('*', 'IBLOCK_ID', 'ID', 'NAME', 'PROPERTY_FORUM_TOPIC_ID', 'SECTION_ID', 'SECTION', 'SECTIONS')
);
if($ar_res = $res->GetNext()){
var_dump(date('d.m.Y H:i:s'));
echo 'найден товар '.$ar_res['NAME'];
$TYPE_MAIL_EVENT = 'NEW_ITEM_REVIEW';
var_dump($ar_res);
$arMail = array(
'ITEM_NAME' => $ar_res['NAME'],
'AUTHOR_NAME' => $arFields['AUTHOR_NAME'],
'POST_DATE' => date('d.m.Y H:i:s'),
'POST_MESSAGE' => $arFields['POST_MESSAGE'],
'PATH2ITEM' => $ar_res['DETAIL_PAGE_URL'],
);
var_dump($arMail);
$ID_MAIL_EVENT = 78;
$ok = CEvent::Send($TYPE_MAIL_EVENT, "s1", $arMail, $ID_MAIL_EVENT);
if ($ok){
echo 'Сообщение отправлено';
}
else{
'Сообщение не отправлено '.$ok;
}
}
else
echo 'Элемент не найден.';
$dump = ob_get_clean();
if (!empty($ok)){
return true;
}
else{
$filename = dirname(__FILE__).'/dump.txt';
if (!file_exists($filename)){
$f = fopen($filename, 'w+');
fclose($f);
} file_put_contents($filename, $dump);
}
}
AddEventHandler("forum", "onAfterMessageAdd", "notifyNewItemFeedback"); ?>
Теперь код необходимо скопировать и вставить в файл init.php. Для этого
перейдите в Рабочий стол → Контент → Структура сайта → Файлы и папки → bitrix → php_interface. Найдите файл init.php,нажмите кнопку «гамбургер» рядом с ним и выберите пункт «Редактировать как PHP».

