Как отправлять почту в битриксе через SMTP

19.09.2019

Как не странно, но из коробки в Битриксе нет возможности настроить отправку писем через SMTP. Есть несколько бесплатных расширений, но иногда удобнее настроить все руками.

Для переопределения функционала по отправки писем в 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);
  }
}


Категории: Web, PHP, Bitrix CMS, незаконченные
Пометки: Битрикс отправка email
Яндекс.Метрика