Редактировать

Отправка письма не стандартными средствами

Задача

Переопределить стандартную функцию отправки почты на свою реализацию.

Решение

Использовать модуль local.custommail

Как это работает

Стандартным способом переопределения процесса отправки почты в Битрикс является переопределение функции custom_mail.

Параметры функции:

  • to - Получатель.
  • subject - Заголовок письма.
  • message - Тело письма.
  • additional_headers - Дополнительные заголовки.
  • additional_parameters - Дополнительные параметры.

PHP

Переопределим функцию custom_mail. Делаем это в init.php, а еще лучше в подключенном к нему файле functions.php

В примере, для отправки ф-ии используем класс PHPMailer. Так же можно использовать, что угодно, лишь бы оно выполняло поставленную задачу. Например есть swiftmailer

<?php
function custom_mail($to, $subject, $message, $additional_headers='', $additional_parameters='') {
	require 'PHPMailerAutoload.php';

	$mail = new PHPMailer();

        $mail->CharSet = 'UTF-8';
        $mail->isSMTP();
        $mail->SMTPAuth = true;

        $addresses = array_map('trim', explode(',', $to));

        foreach ($addresses as $address) {
            $mail->addAddress($address);
        }

        $mail->Host = 'тут ваш хост';
        $mail->Username = 'тут ваш логин к почте';
        $mail->Password = 'тут ваш пароль к почте';
        $mail->SMTPSecure = 'тут ваша настройка к почте';
        $mail->Port = 'тут ваш порт к почте';
        $mail->setFrom('тут ваш логин к почте');

        $arRows = preg_split("/((\r?\n)|(\r\n?))/", $additional_headers);
        foreach ($arRows as $header) {
            $mail->addCustomHeader($header);
        }

        $mail->ContentType = $mail::CONTENT_TYPE_MULTIPART_ALTERNATIVE;
        $mail->Subject = $subject;
        $mail->Body = $message;

        if (!$mail->send()) {
            return false;
        }

        return true;
}
?>

Проверка отправки сообщения

Зайти в Админку Битрикс, далее Настройки -> Инструменты -> SQL-запрос.

select * from b_event
where event_name like '%MSG_TYPE%'
order by date_insert desc

MSG_TYPE - код типа сообщения