Как не странно, но из коробки в Битриксе нет возможности настроить отправку писем через SMTP. Есть несколько бесплатных расширений, но иногда удобнее настроить все руками.
Как отправлять почту в битриксе через SMTP
19.09.2019
Для переопределения функционала по отправки писем в CMS Bitrix , нужно в файле /bitrix/php_interface/init.php добавить функцию:
function custom_mail($to, $subject, $message, $additionalHeaders = '')
{
// Код для отправки писем.
}
Для работы с SMTP использовал библиотеку phpmailer (Устанавливал через Composer )
Конечный код (нужно подставить данные от своего почтового ящика):
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
function custom_mail($to, $subject, $message, $additionalHeaders = '')
{
require_once($_SERVER['DOCUMENT_ROOT'].'/vendor/autoload.php');
$mail = new PHPMailer();
/* Решение проблем для старых версий Битрикса, когда письма приходят с закодированным заголовком
$subject = str_replace('=?UTF-8?B?', '', $subject);
$subject = str_replace('?=', '', $subject);
$subject = base64_decode($subject);
//*/
try {
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPKeepAlive = true;
$mail->SMTPDebug = 1;
$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.yandex.ru';
$mail->Port = 465; // 587
$mail->Username = 'no@oddler.ru';
$mail->Password = 'Password';
$mail->CharSet = 'UTF-8'; // 'Windows-1251'
$mail->SetFrom($mail->Username);
$mail->AddAddress(trim($to));
$mail->Subject = $subject;
$mail->MsgHTML($message);
$bRet = $mail->Send();
$mail->ClearAddresses();
$mail->ClearAttachments();
return $bRet;
} catch (Exception $e) {
die('Message could not be sent. Mailer Error: '. $mail->ErrorInfo);
}
}