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С-Битрикс
Подробно рассказываем о способах отправки писем на электронную почту, нюансах настроек и исправлении ошибок. Вы узнаете, как проверить качество доставки сообщений и улучшить их доставку.

- Полезные материалы
- Блог для партнеров
- Договоры
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();, поэтому такие письма обладают большей вероятностью попадания в спам.
Даже если такое сообщение доходит до адресата, то оно не вызывает доверия получателя, так как:
- Нет подписи DKIM. Подтверждает подлинность отправителя с помощью ключа DKIM. Подпись предотвращает замену письма злоумышленниками.
- Нет SPF-записи. Защищает от писем с поддельными адресами отправителей из вашего домена. Для ее настройки создается TXT-запись. В ней перечисляют серверы, которые могут отправлять письма от имени домена, и механизм обработки писем, отправленных от других серверов.
- Нет шифрования. Обеспечивает конфиденциальность передачи данных. Для настройки нужно установить 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).
В открывшейся вкладке выполните следующие действия для повышения качества писем:
- Включите Greylisting. Greylisting – это автоматический фильтр входящего спама на уровне протокола SMTP. Он блокирует спам с помощью временной задержки входящих сообщений.
- Включите SpamAssassin. SpamAssassin – эффективное средство для фильтрации спама, основанное на взаимодействии ключевых компонентов: оценочного сервиса, транспортного агента и базы шаблонов писем.
- Включите проверку на вирусы. Clam AntiVirus – пакет антивирусного ПО. Он предназначен для проверки файлов, прикрепленных к сообщениям.
- Включите DKIM для домена. Технология DomainKeys Identified Mail (DKIM) объединяет несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты.
- Включите DMARC для домена. DMARC предназначен для снижения количества спамовых и фишинговых электронных писем.
- Активируйте защищенное соединение (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 или ВКонтакте.
Как закалялся код.

Пробовал отправлять собственные шаблоны писем из кода компонента в CMS 1С Битрикс.
Сразу встретился с возможными проблемами отправки.
Использую функцию CEvent->Send().
Проверка и еще раз проверка
Для начала нужно проверить правильно ли настроено событие и шаблон вашего сообщения в административной панели Битрикс Настройки > Почтовые события.
- Почтовое событие существует и в вашу функцию CEvent->Send() передается верное значение идентификатора типа события.
- Событию назначен хотя бы один почтовый шаблон.
- Шаблон события активен и в обязательных полях стоят правильные значения или шаблоны значений.
На хостинге проблема с функцией 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, решилась обращением в саппорт хостинга.
- Был неправильно настроен шаблон сообщения.