public function __construct(array $mailParams) { if (array_key_exists('LINK_PROTOCOL', $mailParams) && strlen($mailParams['LINK_PROTOCOL']) > 0) { $this->trackLinkProtocol = $mailParams['LINK_PROTOCOL']; } else { $this->trackLinkProtocol = 'http'; } if (array_key_exists('TRACK_READ', $mailParams) && !empty($mailParams['TRACK_READ'])) { $this->trackReadLink = Tracking::getLinkRead($mailParams['TRACK_READ']['MODULE_ID'], $mailParams['TRACK_READ']['FIELDS']); } if (array_key_exists('TRACK_CLICK', $mailParams) && !empty($mailParams['TRACK_CLICK'])) { $this->trackClickLink = Tracking::getLinkClick($mailParams['TRACK_CLICK']['MODULE_ID'], $mailParams['TRACK_CLICK']['FIELDS']); if (!empty($mailParams['TRACK_CLICK']['URL_PARAMS'])) { $this->trackClickUrlParams = $mailParams['TRACK_CLICK']['URL_PARAMS']; } } if (array_key_exists('LINK_DOMAIN', $mailParams) && strlen($mailParams['LINK_DOMAIN']) > 0) { $this->settingServerName = $mailParams['LINK_DOMAIN']; } $this->charset = $mailParams['CHARSET']; $this->contentType = $mailParams['CONTENT_TYPE']; $this->messageId = $mailParams['MESSAGE_ID']; $this->eol = $this->getMailEol(); $this->boundary = "----------" . uniqid(""); $this->attachment = isset($mailParams['ATTACHMENT']) ? $mailParams['ATTACHMENT'] : array(); $this->initSettings(); $this->setTo($mailParams['TO']); $this->setSubject($mailParams['SUBJECT']); $this->setBody($mailParams['BODY']); $this->setHeaders($mailParams['HEADER']); $this->setAdditionalParameters(); }
/** * @param array $arFields * @return string */ public static function getLinkSub(array $fields) { $tag = \Bitrix\Main\Mail\Tracking::getSignedTag(static::MODULE_ID, $fields); $urlPage = \Bitrix\Main\Config\Option::get('sender', 'sub_link'); if ($urlPage == "") { $bitrixDirectory = \Bitrix\Main\Application::getInstance()->getPersonalRoot(); $result = $bitrixDirectory . '/tools/sender_sub_confirm.php?sender_subscription=confirm&tag=' . urlencode($tag); } else { $result = $urlPage . (strpos($urlPage, "?") === false ? "?" : "&") . 'sender_subscription=confirm&tag=' . urlencode($tag); } return $result; }
$messageDictionary = array('message_success' => array('TYPE' => 'NOTE', 'TEXT' => GetMessage("SENDER_SUBSCR_NOTE_SUCCESS")), 'message_confirm' => array('TYPE' => 'NOTE', 'TEXT' => GetMessage("SENDER_SUBSCR_NOTE_CONFIRM")), 'message_err_sec' => array('TYPE' => 'ERROR', 'TEXT' => GetMessage("SENDER_SUBSCR_ERR_SECURITY")), 'message_err_email' => array('TYPE' => 'ERROR', 'TEXT' => GetMessage("SENDER_SUBSCR_ERR_EMAIL"))); $cookieLifeTime = time() + 60 * 60 * 24 * 30 * 12 * 10; // 30 days * 12 months * 10 ~ 10 years if ($_SERVER['REQUEST_METHOD'] == 'GET') { if (isset($_GET['sender_subscription']) && isset($messageDictionary[$_GET['sender_subscription']])) { $arResult['MESSAGE'] = $messageDictionary[$_GET['sender_subscription']]; $arResult['MESSAGE']['CODE'] = $_GET['sender_subscription']; } if (isset($_GET['tag']) && isset($_GET['sender_subscription']) && $_GET['sender_subscription'] == 'confirm') { if (!CModule::IncludeModule("sender")) { $obCache->AbortDataCache(); ShowError(GetMessage("SENDER_SUBSCR_MODULE_NOT_INSTALLED")); return; } try { $arTag = \Bitrix\Main\Mail\Tracking::parseSignedTag($_REQUEST['tag']); if ($arTag['MODULE_ID'] == 'sender' && check_email($arTag['FIELDS']['EMAIL']) && is_array($arTag['FIELDS']['MAILING_LIST']) && isset($arTag['FIELDS']['SITE_ID'])) { \Bitrix\Sender\Subscription::add($arTag['FIELDS']['EMAIL'], $arTag['FIELDS']['MAILING_LIST'], $arTag['FIELDS']['SITE_ID']); $APPLICATION->set_cookie("SENDER_SUBSCR_EMAIL", $arTag['FIELDS']['EMAIL'], $cookieLifeTime); $subscr_EMAIL = $arTag['FIELDS']['EMAIL']; unset($_SESSION['SENDER_SUBSCRIBE_LIST']); $arResult['MESSAGE'] = array('TYPE' => 'NOTE', 'CODE' => 'message_success'); if ($arParams['AJAX_MODE'] != 'Y') { LocalRedirect($APPLICATION->GetCurPageParam('sender_subscription=message_success', array('sender_subscription'))); } } } catch (\Bitrix\Main\Security\Sign\BadSignatureException $exception) { $arResult['MESSAGE'] = array('TYPE' => 'ERROR', 'CODE' => 'message_err_sec'); } } }
<?php define("STOP_STATISTICS", true); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; header('Content-Type: image/gif'); echo base64_decode("R0lGODdhAQABAIAAAPxqbAAAACwAAAAAAQABAAACAkQBADs="); $tag = $_GET['tag']; $arTag = \Bitrix\Main\Mail\Tracking::parseTag($_GET['tag']); $arTag['FIELDS']['IP'] = $_SERVER['REMOTE_ADDR']; \Bitrix\Main\Mail\Tracking::read($arTag); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
/** * @param $arFields * @return string */ public static function getLinkUnsub($arFields) { return \Bitrix\Main\Mail\Tracking::getLinkUnsub(static::MODULE_ID, $arFields); }
<?php define("NO_KEEP_STATISTIC", true); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; $url = urldecode($_GET['url']); $arTag = \Bitrix\Main\Mail\Tracking::parseTag($_GET['tag']); $arTag['FIELDS']['IP'] = $_SERVER['REMOTE_ADDR']; $arTag['FIELDS']['URL'] = $url; \Bitrix\Main\Mail\Tracking::click($arTag); if ($url) { LocalRedirect($url); } else { LocalRedirect('/'); }
$arResult['LIST'] = \Bitrix\Main\Mail\Tracking::getSubscriptionList($arTag); if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('MAIN_MAIL_UNSUB_BUTTON', $_POST) && check_bitrix_sessid()) { $unsubscribeListFromForm = is_array($_POST['MAIN_MAIL_UNSUB']) ? $_POST['MAIN_MAIL_UNSUB'] : array(); $arUnsubscribeList = array(); foreach ($arResult['LIST'] as $key => $unsubItem) { if (in_array($unsubItem['ID'], $unsubscribeListFromForm)) { $arUnsubscribeList[] = $unsubItem['ID']; $arSubList[$key]['SELECTED'] = true; } else { $arResult['LIST'][$key]['SELECTED'] = false; } } $messageResult = null; if (!empty($arUnsubscribeList)) { $arTag['FIELDS']['UNSUBSCRIBE_LIST'] = $arUnsubscribeList; $result = \Bitrix\Main\Mail\Tracking::unsubscribe($arTag); if ($result) { $messageResult = '0'; } else { $messageResult = '1000'; } } else { $messageResult = '1001'; } if ($messageResult !== null) { LocalRedirect($APPLICATION->GetCurPageParam("unsubscribe_result=" . $messageResult, array("unsubscribe_result"))); } } else { if (isset($_REQUEST['unsubscribe_result']) && is_numeric($_REQUEST['unsubscribe_result'])) { if ($_REQUEST['unsubscribe_result'] == '0') { $arResult['DATA_SAVED'] = 'Y';