Битрикс custom_mail — простой вариант

В интернете полно примеров как можно подключить PHPMailer и отправлять почту через SMTP. Есть даже парочка бесплатных модулей, работающих по этому принципу. В статье ниже вы научитесь отлавливать почтовые события.

Как при помощи custom mail отлавливать исходящие почтовые сообщения в Битриксе

Есть несколько важных составляющих, которые помогут прояснить общую картину:
1. Если ваша почта не работает, зайдите в Командную PHP-строку, и наберите:

$email = 'test@gmail.com';
mail($email, 'theme', 'message');

где $email — ваш почтовый ящик. На этом шаге будет видно отправляется ли почта в принципе, если нет — пишите в поддержку хостинга. Если письмо приходит идем дальше.

2. Усложняем наш код, отправляем почтовое событие:

$email = 'test@gmail.com';
$arEventFields = array(
    "EMAIL" => $email,
);
$site = 's1';
CEvent::Send("SALE_ORDER_PAID", $site, $arEventFields);

SALE_ORDER_PAID — просто существующее событие. Обычно, на этом этапе происходят ошибки. Чтобы проверить статус всех сообщений, вам необходимо перейти в таблицы:
/bitrix/admin/perfmon_table.php?PAGEN_1=1&SIZEN_1=20&lang=ru&table_name=b_event&by=ID&order=desc

Статус SUCCESS_EXEC = F — означает Fail, ошибку. Y — Yes, успешно отправлено. Что самое странное, оба этих статуса не гарантируют отправку сообщения.. Вот тут нам и понадобится 3ий шаг.

3. Добавляем функцию custom_mail в init.php:

function custom_mail($to, $subject, $message, $additional_headers='', $additional_parameters='')
{
	//AddMessage2Log(
	//	'To: '.$to.PHP_EOL.
	//	'Subject: '.$subject.PHP_EOL.
	//	'Message: '.$message.PHP_EOL.
	//	'Headers: '.$additional_headers.PHP_EOL.
	//	'Params: '.$additional_parameters.PHP_EOL
	//);
	$emailFrom = 'info@site.ru';
	$copy = 'info@site.ru';
	$headers = "From: " . $emailFrom . "\r\n";
	$headers .= "Reply-To: ". $emailFrom . "\r\n";
	$headers .= "CC: info@site.ru\r\n";
	$headers .= "MIME-Version: 1.0\r\n";
	$headers .= "Content-Type: text/html; charset=1251\r\n";

	mail($to, $subject, $message, $headers);
	mail($copy, $subject, $message, $headers);
}

AddMessage2Log — при помощи этого, будет видно что приходит нам из почтового шаблона. Включается в dbconn.php:
define(«LOG_FILENAME», $_SERVER[«DOCUMENT_ROOT»].»/log.txt»);

На что стоит обратить внимание в шаге 3:
— во-первых, у меня используется кодировка 1251, на вашем проекте скорей всего будет UTF-8
— во-вторых, отправляю стандартную функцию не просто 2 раза, но еще и с копией (поле CC:…)

$message — уже содержит весь хтмл, поэтому в хедерс мы и указываем Content-Type: text/html.

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *