- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/posting/sender.php
- Класс: BitrixSenderPostingSender
- Вызов: Sender::sendToRecipient
protected function sendToRecipient($recipient)
{
self::applyRecipientToMessage($this->message, $recipient);
// event before sending
$eventSendParams = [
'FIELDS' => $this->message->getFields(),
'TRACK_READ' => $this->message->getReadTracker()->getArray(),
'TRACK_CLICK' => $this->message->getClickTracker()->getArray(),
'MAILING_CHAIN_ID' => $this->letter->getId()
];
$linkDomain = $this->message->getReadTracker()->getLinkDomain();
if ($linkDomain)
{
$eventSendParams['LINK_DOMAIN'] = $linkDomain;
}
$event = new MainEvent('sender', 'OnBeforePostingSendRecipient', [$eventSendParams]);
$event->send();
foreach ($event->getResults() as $eventResult)
{
if ($eventResult->getType() == MainEventResult::ERROR)
{
return false;
}
if (is_array($eventResult->getParameters()))
{
$eventSendParams = array_merge($eventSendParams, $eventResult->getParameters());
}
}
if (count($event->getResults()) > 0)
{
$this->message->setFields($eventSendParams['FIELDS']);
$this->message->getReadTracker()->setArray($eventSendParams['TRACK_READ']);
$this->message->getReadTracker()->setArray($eventSendParams['TRACK_CLICK']);
}
try
{
$sendResult = $this->message->send();
}
catch (MainMailStopException $e)
{
$sendResult = false;
$this->prevent();
}
return $sendResult;
}