Как работает битрикс event send
Перейти к содержимому

Как работает битрикс event send

  • автор:

send

Статический метод отсылает почтовое событие. Возвращает объект Main\Entity\AddResult.

Аналог метода CEvent::Send старого ядра.

В отличие от старого ядра параметр LID — строка, то есть массив идентификаторов сайтов нужно передавать через запятую.

Параметры
Параметр Описание Версия
$data Массив параметров события.
Примеры
// D7 use Bitrix\Main\Mail\Event; Event::send(array( "EVENT_NAME" => "NEW_USER", "LID" => "s1", "C_FIELDS" => array( "EMAIL" => "info@intervolga.ru", "USER_ID" => 42 ), ));

Пример отправки файла во вложении:

$fileId = false; if($_FILES['file']) $fileId = \CFile::SaveFile($_FILES['file'],"mailatt"); \Bitrix\Main\Mail\Event::sendImmediate(array( // or send "EVENT_NAME" => "VM_SERVICE_REQUEST", "LID" => "s2", "C_FIELDS" => array( "EMAIL" => $arCompany["PROPERTIES"]["EMAIL"]["VALUE"], "COMPANY_NAME" => $arCompany["NAME"], "MESSAGE" => $request->getPost("MESSAGE"), "USER_NAME" => $USER->GetFullName(), "USER_EMAIL" => $USER->GetEmail(), ), "FILE" => array($fileId), // нужно сохранять сначала, из документации к CEvent::send: //Массив id файлов, которые используются классом CFile. //Либо можно передать массив абсолютных путей до файлов. )); if($fileId) CFile::Delete($fileId);

Для отправки конкретного почтового шаблона нужно передавать (int)MESSAGE_ID:

\Bitrix\Main\Mail\Event::send([ "EVENT_NAME" => "LOCAL_CORE_FORM_ADD_FAQ", 'MESSAGE_ID' => 64, "LID" => "s1", "C_FIELDS" => [ 'ID' => $arFields['ID'], ] ]);

Как настроить отправку писем через Event::send?

Всем привет! Не отправляются письма с сайта. Интересный факт письмо отправляется с админки, а с сайта — нет. С помощью командной php-строки отправлены письма методами Event::send и CEvent::Send, в первом случае письмо отправилось, во втором — нет, но сообщение выдало что «успешно отправлено » в sql таблице b_event письмо имеет статус SUCCESS_EXEC = F. Не могу понять, где прописан CEvent::Send, помогите пожалуйста
1-я проверка Event::send

use Bitrix\Main\Mail\Event; $arFields = array( "EVENT_NAME" => "SALE_NEW_ORDER", "LID" => "s1", "C_FIELDS" => array( "EMAIL" => "mail_to@mail.com", "BCC" => "mail_to@mail.com", "DEFAULT_EMAIL_FROM" => "mail_from@mail.com", ), "DUPLICATE"=>"Y", ); $result=Event::send($arFields); if($result->GetId())< echo 'Успешно отправлено!'; >else

2-я проверка CEvent::Send

$arEventFields = array( "EMAIL_TO" => "mail_to@mail.com", "BCC" => "mail_to@mail.com", "DEFAULT_EMAIL_FROM" => "mail_from@mail.com", "ORDER_LIST" => "состав заказа", ); $result=CEvent::Send("SALE_NEW_ORDER", "s1", $arEventFields,'Y'); if(intval($result))< echo 'Успешно отправлено!'; >else
  • Вопрос задан более двух лет назад
  • 1743 просмотра

8 комментариев

Средний 8 комментариев

Работа с электронной почтой на 1С-Битрикс

Подробно рассказываем о способах отправки писем на электронную почту, нюансах настроек и исправлении ошибок. Вы узнаете, как проверить качество доставки сообщений и улучшить их доставку.

Работа с электронной почтой на 1С-Битрикс

  • Полезные материалы
  • Блог для партнеров
  • Договоры

10 августа 2021
Содержание статьи

  • 1. Как отправить письма из 1С-Битрикс
  • Отправление писем с php mail();
  • Результат отправки письма с php mail();
  • Отправление писем из ядра 1С-Битрикс
  • Результат отправки письма из ядра 1С-Битрикс
  • Проверка отправки писем с помощью форм на сайте
  • Результат отправки с помощью форм
  • 2. Как проверить качество доставки сообщений
  • 3. Как настроить почтовый сервер
  • Локальный почтовый сервер
  • Внешний почтовый сервер
  • >>Подключение SMTP-модуля
  • 4. Как избежать попадания писем в спам
  • Отправление писем через модули 1С-Битрикс
  • >> Рассылка
  • >> Отправление через Email-маркетинг
  • Отправление писем с доменной почты

1. Как отправить письма из 1С-Битрикс

Многие действия на сайте, работающем на 1С-Битрикс, сопровождаются отправкой почтовых уведомлений. При этом могут возникнуть проблемы с доставкой писем – попадание в спам или блокировка отправки сообщений.

Отправить сообщение из 1С-Битрикс можно с помощью скрипта php mail(); и из ядра 1С-Битрикс.

Отправление писем с php mail();

PHP-функция передает команду приложению sendmail, которое отправляет электронное сообщение. Для его отправки используется скрипт mail().

Отправка сообщения с php mail(); происходит через административную панель вашего сайта. Для этого перейдите в Настройки (1) → Инструменты (2) → Командная строка PHP (3).

Для отправки письма нужно заполнить обязательные параметры – e-mail, заголовок письма и текст сообщения. В поле командной PHP-строки введите код: mail(«to», «subject», «text»);.

  • «to» на электронную почту получателя;
  • «subject» – заголовок вашего письма;
  • «text» – текст вашего письма по строкам.

Отправьте письмо адресату с помощью кнопки «Выполнить».

Функция mail использует локальный почтовый сервер. С ним связаны ограничения: он может отсутствовать, быть прописан в черных списках или негативно влиять на производительность.

Кроме этого, антиспамовые фильтры не одобряют отправление сообщений функцией php mail();, поэтому такие письма обладают большей вероятностью попадания в спам.

Даже если такое сообщение доходит до адресата, то оно не вызывает доверия получателя, так как:

  1. Нет подписи DKIM. Подтверждает подлинность отправителя с помощью ключа DKIM. Подпись предотвращает замену письма злоумышленниками.
  2. Нет SPF-записи. Защищает от писем с поддельными адресами отправителей из вашего домена. Для ее настройки создается TXT-запись. В ней перечисляют серверы, которые могут отправлять письма от имени домена, и механизм обработки писем, отправленных от других серверов.
  3. Нет шифрования. Обеспечивает конфиденциальность передачи данных. Для настройки нужно установить SSL-сертификат или TLS-сертификат.

Результат отправки письма с php mail();

Безопасность письма обеспечена только стандартным шифрованием, которое установлено автоматически между сервером Reddock и сервером почтового сервиса.

Подписей отправитель письма не имеет. Значит, такое письмо могло быть отправлено и злоумышленниками.

Отправка на Яндекс почту

Отправка на Gmail

Отправление писем из ядра 1С-Битрикс

Для отправки почтовых сообщений из ядра 1С-Битрикс нужно настроить почтовую систему. Для этого создать:

  • тип почтового события,
  • почтовый шаблон,
  • почтовое событие.

Тип почтового события и почтовый шаблон можно настроить в административной панели: Настройки (1) → Настройки продукта (2) → Почтовые и СМС события (3). В последнем выбрать необходимое действие.

Само почтовое событие отправляется функцией send. С помощью нее происходит отправка письма. Для этого нужно перейти в Настройки (1) → Инструменты (2) → Командная PHP-строка (3). Введем в поле код из примера документации 1С-Битрикс для разработчиков. В нем замените e-mail получателя на адрес вашей электронной почты и нажмите «Выполнить».

// D7 use Bitrix\Main\Mail\Event; Event::send(array( "EVENT_NAME" => "NEW_USER", "LID" => "s1", "C_FIELDS" => array( "EMAIL" => "info@intervolga.ru", ), ));

Результат отправки письма из ядра 1С-Битрикс

Письмо не пришло ни на Яндекс.Почту, ни на Gmai, поэтому проверим его статус. Для этого перейдите в панели администрирования в Настройки (1) → Производительность (2) → Таблицы (3) и выберите таблицу «b_event» (4).

В таблице находятся данные о всех отправленных сообщениях, их содержании и доставке. Наше письмо не было доставлено.

Проверка отправки писем с помощью форм на сайте

Используйте форму на сайте, после заполнения которой автоматически приходит уведомление на почту. Например:

  • форма обратной связи,
  • регистрация на сайте,
  • подписка на email-рассылку,
  • покупка товара и др.

При успешном заполнении формы на указанную почту будет отправлено уведомление об отправке сообщения, регистрации, подтверждении заказа или подписки.

Результат отправки с помощью форм

Мы проверили качество отправки писем с помощью mail-tester. Для этого использовали форму подписки на email-рассылку, вставили предлагаемый mail-tester почтовый адрес и получили такой результат:

Дополнительно проверили доставку сообщений в Gmail и Яндекс.Почту. Результат – попадание в папку «Спам».

Яндекс.Почта

2. Как проверить качество доставки сообщений

Рекомендуем анализировать качество доставки сообщений с помощью спам-тестеров. Мы используем mail-tester, потому что он удобен в применении и имеет русский интерфейс.

Использовать mail-tester просто. На странице mail-tester.com появляется случайный адрес электронной почты. На нее нужно отправить письмо с проверяемого почтового ящика.

Важно: mail-tester позволяет бесплатно проверить письма три раза за одни сутки.

Сервис выявляет спам, проверяет содержание и форматирование письма, подлинность сервера, черные списки и нерабочие ссылки. По всем параметрам предлагает рекомендации по исправлению.

Для успешной доставки писем оценка должна быть минимум 8 баллов.

3. Как настроить почтовый сервер

Для отправки сообщений необходимо настроить почтовый сервер: локальный и внешний.

Локальный почтовый сервер

Локальный почтовый сервер в BILLmanager используется по умолчанию. Для отправки вызывается команда ‘sendmail -t’, которой передается письмо, сформированное системой.

Для его настройки в личном кабинете услуги перейдите в Почта (1) → Почтовые домены (2), выберите почтовый домен (3) и нажмите на «Изменить» (4).

В открывшейся вкладке выполните следующие действия для повышения качества писем:

  1. Включите Greylisting. Greylisting – это автоматический фильтр входящего спама на уровне протокола SMTP. Он блокирует спам с помощью временной задержки входящих сообщений.
  2. Включите SpamAssassin. SpamAssassin – эффективное средство для фильтрации спама, основанное на взаимодействии ключевых компонентов: оценочного сервиса, транспортного агента и базы шаблонов писем.
  3. Включите проверку на вирусы. Clam AntiVirus – пакет антивирусного ПО. Он предназначен для проверки файлов, прикрепленных к сообщениям.
  4. Включите DKIM для домена. Технология DomainKeys Identified Mail (DKIM) объединяет несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты.
  5. Включите DMARC для домена. DMARC предназначен для снижения количества спамовых и фишинговых электронных писем.
  6. Активируйте защищенное соединение (SSL-сертификат).

Внешний почтовый сервер

Существует несколько вариантов подключения внешнего почтового сервера. Лучший вариант – отправка почты с помощью SMTP-модуля.

Подключение SMTP-модуля

Модуль «Отправка электронной почты через SMTP» решает эту проблему применением SMTP-серверов.

Для настройки необходимо установить модуль от Веб студии Руби из Маркетплейса 1С-Битрикс.

2. В открывшейся странице модуля нажмите на кнопку «Установить» (1);

3. В поле введите адрес вашего сайта или портала (2) и нажмите на кнопку «Установить» (3).

Перейдите в Marketplace (1) → Установленные решения (2) и установите модуль (3-4).

После успешной установки модуля появится сообщение:

В панели управления Битрикс у вас появится новый пункт. Перейдите в Настройки (1) → Настройки продукта (2) → Настройки модулей (3).

В открывшейся вкладке укажите параметры вашего SMTP-сервера, отметьте галочки для «Модуль активен», «Вести журнал», «Проверять формат адреса получателя» и «Сохранять письмо при ошибке».

Далее необходимо выбрать типовые профили (1) в соответствии с вашей почтой: Яндекс, Google или Mail.Ru. Нажмите на кнопку «Применить» (2).

Выполнив эти действия, почтовые сообщения будут отправляться через SMTP-сервер.

Дополнительные SMTP-аккаунты можно добавить с помощью опции «Добавить дополнительный E-mail SMTP аккаунт». Укажите исходящий адрес и в новой вкладке сделайте настройки для этого адреса.

Важно! Для подключения модуля необходимо добавить строку

include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/wsrubi.smtp/classes/general/wsrubismtp.php");

в файл /bitrix/php_interface/init.php или /local/php_interface/init.php.

Если такого файла нет, его необходимо создать.

4. Как избежать попадания писем в спам

Рассказываем, что предпринять для доставления писем в папку «Входящие».

Отправление писем через модули 1С-Битрикс

В административной панели сайта есть возможность отправки почты двумя способами: с помощью рассылки и email-маркетинга.

Рассылка

Для отправки письма перейдите в Сервисы (1) → Рассылки (2) → Выпуски (3). Создаем рассылку (4), в поле электронной почты получателя вставьте новый адрес из mail-tester. Отправка возможна только на один e-mail.

Статус письма обновляется на «Отправлено с ошибками».

Для исправления ошибок отправьте письмо повторно. Нажмите на тему письма и повторите отправку для ошибочных.

Результат отправки письма в mail-tester. Отправление писем блокируется.

Отправление через Email-маркетинг

Для отправки письма перейдите в Маркетинг (1) → Email-маркетинг (2) → Старт (3).

Создайте новую рассылку.

Выберите первый шаблон. В графе «Получатели тестовой отправки» введите адрес, предложенный mail-tester, и отправьте на него письмо.

Результат стал лучше, однако этой оценки недостаточно для качественной доставки писем.

Отправление писем с доменной почты

Используйте сторонние приложения для отправки электронной почты с использованием доменной почты. Адрес электронной почты с доменом вашего сайта наиболее привлекателен, повышает доверие и лояльность клиентов.

Существует несколько специализированных сервисов по созданию почты: Яндекс, Google, Mail.Ru и др.

Создать почту можно и на хостинге, но по сравнению с Яндекс, Google, Mail.Ru она имеет ряд недостатков:

  • максимальное количество отправляемых писем – 300 в час;
  • максимальный размер почтового сообщения – 25 000 КБ;
  • почтовый сервис на хостинге имеет стандартную панель, в ней нет дополнительных инструментов и интеграций;
  • при переходе к другому хостинг-провайдеру, вся ваша почта останется на хостинге и вам придется переносить ее самостоятельно.

Однако и специализированные сервисы имеют слабые стороны:

  • Почта Mail.Ru – не поддерживает подключение доменов в зоне .рф;
  • G Suite (от Google) – имеет только 14-дневный бесплатный период использования.

Поэтому рекомендуем использовать сервис Яндекс.Почта. Для создания почты на Яндекс следуйте нашей инструкции.

После настройки протестируйте доставку повторно. Какой результат получился:

Не пропустите новые материалы и обновления — подпишитесь на нас в любимой соцсети: Telegram или ВКонтакте.

Как закалялся код.

1С Битрикс проблема отправки писем CEvent::Send

Пробовал отправлять собственные шаблоны писем из кода компонента в CMS 1С Битрикс.
Сразу встретился с возможными проблемами отправки.
Использую функцию CEvent->Send().

Проверка и еще раз проверка

Для начала нужно проверить правильно ли настроено событие и шаблон вашего сообщения в административной панели Битрикс Настройки > Почтовые события.

  1. Почтовое событие существует и в вашу функцию CEvent->Send() передается верное значение идентификатора типа события.
  2. Событию назначен хотя бы один почтовый шаблон.
  3. Шаблон события активен и в обязательных полях стоят правильные значения или шаблоны значений.

На хостинге проблема с функцией mail

Банальная проблема. Делаем тестовый файл, проверяем отправку, если действительно есть проблема, обращаемся к хостеру.

Пример кода:

 else < echo 'Проблема с функцией Mail()!'; >?>

Проверка состояния почтового события в БД

Функция 1С Битрикс CEvent->Send() не отправляет сообщение немедленно, а лишь создает почтовое событие в системе которое будет обработано функцией CEvent::CheckEvents(). (подробнее про Почтовую систему 1С Битрикс).

Идем в Настройки-Инструменты-SQL-запрос.

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

Смотрим в поле SUCCESS_EXEC:
Y — успешно отправлено (передано в функцию mail, обращаемся к хостеру.
N — Не отправлялось (читаем дальше)
F — Функция MAIL вернула ошибку при отправке (обращаемся к хостеру)

Проверяем настройки отправки по cron

Если в предыдущем пункте вы видите SUCCESS_EXEC=N, то возможно в настройках продукта включена отправка сообщений по крону.
В файле /bitrix/php_interface/dbconn.php ищем константы:

 define('BX_CRONTAB', true); define('BX_CRONTAB_SUPPORT', true); 

Если значение = true, нужно поставить false либо убрать данные константы.
Подробнее про данные константы 1С Битрикс можно узнать здесь.

Снова проверяем отправку.

Проверяем кэш

Если статус отправки события по прежнему = N, то в модуле управления структурой идем по пути /bitrix/managed_cache/ и чистим содержимое.

Итог

В моем случае было 2 проблемы:

  • Не работала функция mail, решилась обращением в саппорт хостинга.
  • Был неправильно настроен шаблон сообщения.

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

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