После установки решения или правки формы на почту падают два одинаковых письма, а в тексте остаются #AUTHOR# и #SALE_EMAIL# — типичная проблема с дублями шаблонов, а не «сломался SMTP». В поиске путают CMS "1С-Битрикс: Управление сайтом" с Bitrix24, и неясно, какой раздел админки трогать. Ниже - где лежат почтовые шаблоны, как связать их с типом события, поправить макросы и получить одно тестовое письмо. SMTP и DNS - в гайде по настройке почты на Битрикс.
Быстрый инсайт: Два одинаковых письма с формы или заказа почти всегда означают два активных шаблона на одно почтовое событие, а не "сломался Битрикс". Шаблон - это текст и поля "От кого / Кому", событие - его тип (FEEDBACK_FORM, SALE_NEW_ORDER). Сначала оставьте один активный шаблон с галочкой вашего сайта, проверьте макросы и тестовую отправку, и только потом копайте SMTP.
Речь про CMS на вашем сервере, не про облачную CRM Bitrix24. Нужен раздел "Почтовые и СМС события" в админке сайта. Событие - имя ситуации (форма, заказ); шаблон - текст письма с макросами #FIELD#. Цепочка: действие на сайте → CEvent::Send / Event::send → очередь b_event → SMTP. Если писем нет совсем, сначала настройте исходящую почту.
Разберите, когда править шаблоны на CMS, а не SMTP
Шаблоны правят, когда письмо доходит, но текст не тот: дубли, пустые макросы, неверный From. SMTP и DNS - когда SUCCESS_EXEC = Y, а inbox пуст или всё в спаме. Не смешивайте задачи: сначала шаблоны и события, потом транспорт из гайда B17.
| Симптом | Скорее шаблон / событие | Скорее SMTP / DNS |
|---|---|---|
| Два одинаковых письма | Да: два активных шаблона или дублирование в главном модуле | Редко |
| В тексте #EMAIL# без подстановки | Да: макрос не описан в типе события или не передан из кода | Нет |
| Форма пишет "отправлено", входящих нет | Возможно: нет активного шаблона для EVENT_NAME | Часто: нет SMTP, cron, custom_mail |
| Письмо есть, но From чужой домен | Да: поле "От кого" в шаблоне | Да: профиль SMTP и DNS |
Делайте: для заявок с формы сверьте шаблон FEEDBACK_FORM с настройкой формы обратной связи. Не делайте: не крутите пароль приложения SMTP, пока не убедились, что активен ровно один шаблон на событие.
Откройте админку и свяжите тип события с шаблоном
Точка входа: "Настройки → Настройки продукта → Почтовые и СМС события → Почтовые шаблоны". В "Типах почтовых событий" видно, какие макросы разрешены для FEEDBACK_FORM, SALE_NEW_ORDER и других имён. Колонка "Шаблоны" сразу показывает, не задвоился ли тип после установки решения.
- Откройте "Типы почтовых события" и найдите нужный EVENT_NAME (для стандартной формы - FEEDBACK_FORM).
- В колонке "Шаблоны" посмотрите, сколько привязано записей к одному типу.
- Перейдите в "Почтовые шаблоны", отфильтруйте по типу события и по сайту (LID: s1, s2 и т.д.).
- Убедитесь, что галочка "Активен" стоит только у одного шаблона на этот тип и сайт (если не нужна осознанная рассылка в несколько ящиков разными шаблонами).
- Запомните ID шаблона - он пригодится для параметра EVENT_MESSAGE_ID у компонента main.feedback.
- При многосайтовости проверьте язык шаблона: иначе подтянется текст не той витрины.
На практике, например после установки магазина или "Веб-форм", установщик часто добавляет второй шаблон, не отключая старый — типичная ошибка, из-за которой подстановка макросов вроде #EMAIL# перестаёт работать в ожидаемом шаблоне. Интегратор видит "отправлено", владелец - два письма. Диагностика: форма → FEEDBACK_FORM → N активных шаблонов → N писем.
Делайте: деактивируйте лишнее, не удаляйте сразу. Не делайте: не держите два активных шаблона "для теста" на одном сайте.
Отредактируйте поля шаблона, макросы и формат письма
В карточке шаблона: "От кого", "Кому", "Тема", BODY_TYPE (text|html), "Сообщение". Макрос #FIELD# подставляется из полей события; #DEFAULT_EMAIL_FROM#, #SITE_NAME# и #SERVER_NAME# тянутся из настроек сайта. #SALE_EMAIL# - e-mail отдела продаж в модуле "Интернет-магазин".
- Откройте почтовый шаблон из списка.
- "От кого": #DEFAULT_EMAIL_FROM# или #SALE_EMAIL# для заказов.
- "Кому": ящик менеджера или макрос по сценарию.
- Тема и тело - только макросы из подсказки типа события.
- html - для табличной вёрстки (до ~600 px ширины).
- Сохраните с правильным LID сайта.
Если #MACRO# не раскрылся, проверьте описание типа события и передачу полей в CEvent::Send. Заказы - SALE_NEW_ORDER (обработка заказов), регистрация - USER_* (личный кабинет).
Делайте: копируйте макросы с формы шаблона. Не делайте: не тащите в html-письмо скрипты и тяжёлый CSS.
Устраните дубли писем, лишние копии и пустые подстановки
Два письма - два активных шаблона на FEEDBACK_FORM. Лишняя копия - поле "E-Mail, на который дублируются исходящие" (all_bcc) в главном модуле. main.feedback без EVENT_MESSAGE_ID при нескольких шаблонах шлёт все активные. В OnBeforeEventAdd можно задать message_id в коде, если в админке второй шаблон отключить нельзя.
- Один активный шаблон на EVENT_NAME и сайт.
- Очистите дублирование исходящих в главном модуле.
- Задайте EVENT_MESSAGE_ID, если второй шаблон нужен только в архиве.
- Сверьте #SALE_EMAIL# с настройками магазина.
При SUCCESS_EXEC = Y виноват не SMTP, а число шаблонов или all_bcc. Порядок: список шаблонов → главный модуль → транспорт из гайда B17.
Делайте: после установки с маркетплейса отфильтруйте тип события и отключите дубликаты. Не делайте: не держите два активных шаблона на один ящик.
Протестируйте шаблон на свой e-mail и гляньте b_event
Тест: временно свой e-mail в "Кому", заявка или тестовый заказ, проверка макросов в теме и теле, возврат боевого адреса. В журнале "Почтовые и СМС события → Журнал" ищите SUCCESS_EXEC = Y. В D7 тот же сценарий через Event::send.
- Сохраните копию текущего "Кому" в заметке.
- Укажите свой ящик, сохраните шаблон.
- Инициируйте событие с фронта (форма, тестовый заказ).
- Убедитесь, что пришло одно письмо, макросы раскрыты, кодировка кириллицы в порядке.
- Откройте "Почтовые и СМС события → Журнал" или последние строки b_event: SUCCESS_EXEC = Y значит, что очередь отработала (детальный разбор ошибок транспорта - в гайде по SMTP).
- Верните "Кому" на рабочий адрес менеджера.
Нет записи в журнале - ищите неактивный шаблон или SITE_ID. Есть Y, но нет письма - SMTP. Перед рекламой - чек-лист после запуска.
Делайте: запишите ID шаблона и EVENT_NAME в паспорт проекта. Не делайте: не оставляйте личный ящик в "Кому" на проде.
Отделите тему оформления TYPE=mail от шаблона сайта
Mail-тема в /bitrix/templates/ (TYPE mail в description.php) оборачивает тело в #WORK_AREA#. Шаблон витрины (TYPE site) на сервисные письма не влияет. Цепочка: тело в почтовом шаблоне → оболочка mail-темы → отправка. Если html "сжимается", проверьте mail-тему. Для простых уведомлений хватит BODY_TYPE = text.
Делайте: тестируйте вёрстку в Gmail и Mail.ru. Не делайте: не копируйте шапку сайта в письмо без адаптации под почтовые клиенты.
Пройдите чек-лист: одно письмо, верные макросы, связка с SMTP
Короткий контроль перед сдачей проекта заказчику:
- На каждый используемый EVENT_NAME (форма, заказ, регистрация) - один активный шаблон на сайт.
- В тестовом письме нет нераскрытых #ПОДСТАНОВОК#.
- #SALE_EMAIL# и From совпадают с настройками магазина и SMTP.
- main.feedback: при нескольких шаблонах задан EVENT_MESSAGE_ID.
- Главный модуль: нет лишнего дублирования исходящих на чужой ящик.
- Журнал b_event после теста показывает SUCCESS_EXEC = Y.
- Исходящий канал проверен по инструкции по почте и SMTP.
Когда шаблоны приведены в порядок, а письма всё равно ведут себя странно на уровне доставки, напишите нам - разберём цепочку событие → шаблон → очередь вместе. Похожие кейсы с формами и магазинами - в портфолио.
Автор: Максим Мольков, Senior-разработчик 1С-Битрикс.
Источники: docs.1c-bitrix.ru (работа с почтой), справка по почтовым шаблонам, учебный курс 1С-Битрикс.
Частые вопросы
Чем почтовое событие отличается от почтового шаблона в 1С-Битрикс?
Событие - тип (FEEDBACK_FORM). Шаблон - текст письма и поля адресов. Без активного шаблона SMTP не поможет.
Почему с формы приходят два одинаковых письма?
Откройте "Почтовые шаблоны", фильтр по FEEDBACK_FORM и сайту. Отключите лишний активный шаблон, проверьте all_bcc и EVENT_MESSAGE_ID у main.feedback. Одна тестовая заявка должна дать одно письмо.
Где изменить текст письма о новом заказе?
Шаблон SALE_NEW_ORDER для вашего LID: тема и "Сообщение", макросы из подсказки. Тестовый заказ на свой ящик.
Какие макросы есть у FEEDBACK_FORM и SALE_NEW_ORDER?
Список в типе события и внизу формы шаблона. Не придумывайте имена: если макроса нет в типе, в письме останутся "решётки".
Как быстро проверить шаблон без правки формы на сайте?
Свой e-mail в "Кому", событие с сайта, проверка, возврат адреса. В коде - Event::send.
Шаблон активен, но приходит письмо не от того сайта - что проверить?
Сверьте LID шаблона с SITE_ID формы. На многосайтовости - отдельные шаблоны или язык.