• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/mail/smtp/mailer.php
  • Класс: BitrixMainMailSmtpMailer
  • Вызов: Mailer::sendMailBySmtp
public function sendMailBySmtp(
	string $sourceTo,
	string $subject,
	string $message,
	string $additional_headers,
	string $additional_parameters
): bool
{

	$addresses = Mailer::parseAddresses($sourceTo)??[];
	if (empty($addresses))
	{
		return false;
	}

	$eol = BitrixMainMailMail::getMailEol();

	if ($subject && $additional_headers)
	{
		$this->Subject = $subject;
		$additional_headers .= $eol . 'Subject: ' . $subject;
	}

	preg_match(self::HEADER_FROM_REGEX, $additional_headers, $headerFrom);;
	if ($this->configuration['force_from'] && $headerFrom)
	{
		$additional_headers = preg_replace(
			self::HEADER_FROM_REGEX,
			$this->configuration['from'],
			$additional_headers
		);
	}

	if (!$headerFrom)
	{
		$additional_headers .= $eol . 'From: ' . $this->configuration['from'];
	}

	$this->clearAllRecipients();
	foreach ($addresses as $to)
	{
		if (!$to['address'])
		{
			continue;
		}
		$this->addAddress($to['address'], $to['name']);
	}

	$additional_headers .= $eol . 'To: ' . $sourceTo;

	$this->prepareBCCRecipients($additional_headers);
	$this->prepareCCRecipients($additional_headers);

	$this->setMIMEBody($message);
	$this->setMIMEHeader($additional_headers);

	$canSend = $this->checkLimit();
	if (!$canSend)
	{
		return false;
	}

	$sendResult = $this->postSend();

	if ($sendResult)
	{
		$this->increaseLimit();
	}

	return $sendResult;
}