1) Создаем директорию (если она еще не создана) include в директории /bitrix/php_interface/.
2)Создаем в директории /bitrix/php_interface/include/ файл unsubscribe_init.php со следующим содержанием (см.исходный код):
<?
// регистрируем обработчик
AddEventHandler("subscribe", "BeforePostingSendMail", Array("MyClass2", "BeforePostingSendMailHandler"));
class MyClass2
{
// создаем обработчик события "BeforePostingSendMail"
function BeforePostingSendMailHandler(&$arFields)
{
$USER_NAME = "Подписчик";
//Попробуем найти подписчика.
$rs = CSubscription::GetByEmail($arFields["EMAIL"]);
if($ar = $rs->Fetch())
{
if(intval($ar["USER_ID"]) > 0)
{
$rsUser = CUser::GetByID($ar["USER_ID"]);
if($arUser = $rsUser->Fetch())
{
$USER_NAME = $arUser["LAST_NAME"]." ".$arUser["NAME"]." ".$arUser["SECOND_NAME"];
}
}
}
$arFields["BODY"] = str_replace("#NAME#", $USER_NAME, $arFields["BODY"]);
$arFields["BODY"] = str_replace("#CONFIRM_CODE#", $ar["CONFIRM_CODE"], $arFields["BODY"]);
$arFields["BODY"] = str_replace("#ID#", $ar["ID"], $arFields["BODY"]);
return $arFields;
}
}
?>
3) После этого в файле /bitrix/php_interface/init.php прописываем следующее (см.исходник):
require($_SERVER['DOCUMENT_ROOT']."/bitrix/php_interface/include/unsubscribe_init.php");
4) В рассылке добавляем:
<a href="http://www.example.org/bitrix/subscribe/edit.php?ID=#ID#&CONFIRM_CODE=#CONFIRM_CODE#&action=unsubscribe">Отказаться от уведомлений</a>
Теперь при отправке рассылок через Bitrix, в письме будет присутствовать ссылка на отказ от уведомлений.
Всё просто.
Леонид Семенов
День добрый, ваша доработка отписки актуальна? Хочу добавить себе на сайт
admin
Да, всё актуально. Добавляйте.