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