• Модуль: 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;
}