Beispiel #1
0
 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();
 }
Beispiel #2
0
 /**
  * @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;
 }
Beispiel #3
0
$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";
Beispiel #5
0
 /**
  * @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('/');
}
Beispiel #7
0
 $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';