9namespace Bitrix\Sender;
11use Bitrix\Main\Config\Option;
13use Bitrix\Main\Localization\Loc;
15use Bitrix\Sender\Entity;
16use Bitrix\Sender\Integration\Seo\Ads\MessageMarketingFb;
17use Bitrix\Sender\Posting\ThreadStrategy\IThreadStrategy;
18use Bitrix\Sender\Posting\ThreadStrategy\ThreadStrategyContext;
19use
function MongoDB\BSON\fromPHP;
21Loc::loadMessages(__FILE__);
51 $id = intval(
$data[
'RECIPIENT_ID']);
67 public static function read($recipientId)
69 $postingContactPrimary = [
'ID' => $recipientId];
81 'POSTING_ID' => $row[
'POSTING_ID'],
82 'RECIPIENT_ID' => $row[
'ID'],
87 if ($row[
'CONTACT_ID'])
107 $id = intval(
$data[
'RECIPIENT_ID']);
111 static::click($id,
$url);
128 $postingContactPrimary = [
'ID' => $recipientId];
139 'POSTING_ID' => $row[
'POSTING_ID'],
140 'RECIPIENT_ID' => $row[
'ID']
145 static::read($recipientId);
151 'filter' => [
'=ID' => $row[
'POSTING_ID']],
154 if ($postingDb->fetch())
156 $deleteParameters = [
'bx_sender_conversion_id'];
158 $linkParams = $letter->getMessage()
160 ->get(
'LINK_PARAMS');
164 parse_str($linkParams, $parametersTmp);
165 if (is_array($parametersTmp))
167 $parametersTmp = array_keys($parametersTmp);
168 $deleteParameters = array_merge($deleteParameters, $parametersTmp);
172 $uri = new \Bitrix\Main\Web\Uri(
$url);
173 $fixedUrl =
$uri->deleteParams($deleteParameters,
false)
176 $fixedUrl = urldecode($fixedUrl);
178 if(mb_strpos($fixedUrl,
'pub/mail/unsubscribe.php') ===
false)
182 'POSTING_ID' => $row[
'POSTING_ID'],
183 'RECIPIENT_ID' => $row[
'ID'],
189 if ($addClickDb && $addClickDb->isSuccess())
194 'URL_FIXED' => $fixedUrl,
195 'CLICK_ID' => $addClickDb->getId(),
198 $event =
new Event(
'sender',
'OnAfterRecipientClick', [$eventData]);
204 if ($row[
'CONTACT_ID'])
230 '=MAILING.ID' => $mailingId,
231 '=MAILING.ACTIVE' =>
'Y',
237 while ($mailChain = $mailChainDb->fetch())
256 $recipientEmail = $address;
257 $emailParts = explode(
'@', $recipientEmail);
258 $recipientName = $emailParts[0];
264 'NAME' => $recipientName,
265 'EMAIL_TO' => $address,
266 'USER_ID' =>
$USER->GetID(),
267 'SENDER_CHAIN_ID' => $mailingChain[
"ID"],
268 'SENDER_CHAIN_CODE' =>
'sender_chain_item_'.$mailingChain[
"ID"]
277 ->setModuleId(
'sender')
278 ->setFields([
'RECIPIENT_ID' => 0])
282 ->setModuleId(
'sender')
283 ->setFields([
'RECIPIENT_ID' => 0])
284 ->setUriParameters([
'bx_sender_conversion_id' => 0])
288 ->setModuleId(
'sender')
291 'MAILING_ID' => !empty($mailingChain) ? $mailingChain[
'MAILING_ID'] : 0,
299 ->setHandlerUri(Option::get(
'sender',
'unsub_link'));
304 return $result ? static::SEND_RESULT_SENT : static::SEND_RESULT_ERROR;
318 public static function send($id, $timeout = 0, $maxMailCount = 0)
323 $sender->setThreadStrategy(
324 MessageMarketingFb::checkSelf($sender->getMessage()->getCode()) ?
325 ThreadStrategyContext::buildStrategy(
326 IThreadStrategy::SINGLE
327 ):
Runtime\Env::getThreadContext()
329 ->setLimit($maxMailCount)
330 ->setTimeout($timeout)
333 static::$threadId = $sender->getThreadStrategy()->getThreadId();
335 switch ($sender->getResultCode())
338 $result = static::SEND_RESULT_CONTINUE;
341 $result = static::SEND_RESULT_ERROR;
344 $result = static::SEND_RESULT_WAITING_RECIPIENT;
347 $result = static::SEND_RESULT_WAIT;
351 $result = static::SEND_RESULT_SENT;
355 $limiter = $sender->getExceededLimiter();
356 if (
$result === static::SEND_RESULT_CONTINUE && $limiter)
360 if ($limiter->getParameter(
'sendingStart'))
362 $currentTime = $limiter->getParameter(
'currentTime');
363 $sendingStart = $limiter->getParameter(
'sendingStart');
364 $sendingStartDate = (new \DateTime())->setTimestamp($sendingStart);
366 $sendingStartDate = $currentTime > $sendingStart
367 ? $sendingStartDate->add(\DateInterval::createFromDateString(
'1 day'))
372 elseif ($limiter->getUnit())
380 $date->add(
'2 minute');
383 $letter->getState()->updatePlannedDateSend($date);
static getRowById($id, array $parameters=[])
static getList(array $parameters=array())
static update($primary, array $data)
static createFromPhp(\DateTime $datetime)
static createInstanceByPostingId($postingId)
static getMailingSiteId($mailingId)
const RESULT_WAITING_RECIPIENT
static unlock($id, $threadId=0)
static lock($id, $threadId=0)
static send($id, $timeout=0, $maxMailCount=0)
const SEND_RESULT_CONTINUE
static $emailSentPerIteration
static click($recipientId, $url)
static unlockPosting($id, $threadId)
static read($recipientId)
static lockPosting($id, $threadId)
const SEND_RESULT_WAITING_RECIPIENT
static sendToAddress($mailingChainId, $address)
static onMailEventMailRead(array $data)
static onMailEventMailClick(array $data)
static getChainReSend($mailingId)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(file_exists($_SERVER['DOCUMENT_ROOT'] . "/urlrewrite.php")) $uri
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)