Бесплатный экспресс-аудит сайта Безопасность, SEO, AI-поиск и 152-ФЗ — отчёт с баллами за минуту Проверить сайт
Обсудить проект

Как настроить отправителя писем в 1С-Битрикс

Письма с сайта приходят от адреса admin@ с именем домена, хотя такого ящика никто не создавал. Или в поле отправителя стоит адрес человека, заполнившего форму, и письмо уходит в спам. Адрес отправителя в 1С-Битрикс задаётся в трёх разных местах, и продукт читает их по очереди — поэтому правка в настройках модуля иногда не меняет ничего.

Три места, где задаётся адрес

  • Почтовый шаблон — Настройки → Настройки продукта → Почтовые шаблоны, поле «От кого». Относится к одному письму: уведомлению о заказе, заявке с формы, регистрации.
  • Настройки сайта — Настройки → Сайты → Список сайтов, поле с адресом электронной почты.
  • Главный модуль — Настройки → Настройки продукта → Настройки модулей → Главный модуль, блок «Почта», поле «E-Mail администратора сайта (отправитель по умолчанию)».

В каком порядке продукт их читает

В поле «От кого» у штатных шаблонов обычно стоит не адрес, а макрос #DEFAULT_EMAIL_FROM#. Разворачивается он так:

  1. адрес сайта, к которому привязан шаблон;
  2. если у сайта поле пустое — «E-Mail администратора сайта» из главного модуля;
  3. если пусто и там — admin@ плюс имя сервера. Это значение по умолчанию прямо в ядре, именно оно и приходит получателям, когда почту никто не настраивал.

Значит, искать причину надо с конца: к какому сайту привязан шаблон и что указано в адресе этого сайта. На установке с двумя сайтами это обычная путаница — шаблон привязан к первому сайту, а письмо ждали от второго. Если в самом шаблоне вместо макроса вписан конкретный адрес, настройки сайта и модуля для этого письма не имеют значения вовсе.

Имя отправителя рядом с адресом

В то же поле пишется и имя: Оверплан <info@overplan.ru>. Кодировать русское имя вручную не нужно, продукт сам переводит его в base64 в заголовке письма и оставляет адрес как есть. Если получателям имя приходит нечитаемым, проверьте в настройках главного модуля флажок «Конвертировать 8-битные символы в заголовке письма».

Как узнать, что ушло и от кого

Письма, отправленные через почтовые события, остаются в таблице b_event, а результат отправки лежит в поле SUCCESS_EXEC:

  • N — событие создано, но ещё не обработано: письмо в очереди;
  • Y — отправлено;
  • P — по событию нашлось несколько шаблонов, часть писем ушла, часть нет;
  • F — отправить не удалось;
  • 0 — не нашлось ни одного активного шаблона для этого типа события, письмо даже не формировалось;
  • E — при обработке возникло исключение, подробности в журнале ошибок. В документации этого статуса нет, в коде он есть.

Отдельной страницы для этой таблицы в административном разделе не предусмотрено. Содержимое смотрят через Настройки → Монитор производительности → Таблицы, выбрав b_event, либо запросом в Настройки → Инструменты → SQL запрос. В записи видно и тип события, и переданные поля — по ним понятно, какой шаблон сработал.

Когда очередь стоит и ошибок нет

Почтовое событие не отправляется в момент создания. Оно попадает в очередь, а разбирает её обработчик — порциями по пять писем за проход, размер порции меняется настройкой «Сколько писем отправлять за один хит».

Запускается обработчик двумя способами, и от этого зависит, где искать поломку. По умолчанию он срабатывает в конце каждой страницы сайта. Но если в bitrix/php_interface/dbconn.php объявлена константа BX_CRONTAB_SUPPORT — так сделано в веб-окружении BitrixVM, — очередь разбирается только при запуске из крона, и посещения сайта на неё не влияют:

* * * * * bitrix test -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.php \
  && { /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.php; }

Когда константа объявлена, а задания нет или путь к сайту в нём другой, письма остаются в статусе N навсегда и ни одна ошибка в журналах не появляется. Проверять это стоит после переноса сайта на другой сервер или смены каталога.

В Битрикс24 отправитель настраивается в интерфейсе

Письма клиентам из портала идут мимо почтовых шаблонов продукта. Отправитель добавляется там, где письмо пишется: Почта → письмо → поле «От кого» → добавление отправителя. Пока к порталу не подключён внешний SMTP-сервер, получатель видит служебный адрес вида noreply@ с адресом портала, хотя ответ на такое письмо дойдёт до нужного сотрудника. В коробочной версии подключить SMTP может только администратор.

Чего настройка отправителя не делает

Правильный адрес в поле «От кого» сам по себе не делает письмо доставленным. Если домен отправителя не разрешил этому серверу отправлять от своего имени, письмо попадёт в спам при любых настройках админки: это записи SPF и DKIM, они разобраны в материале о недоставке писем с сайта. А когда письмо не покидает сервер, дело и вовсе не в продукте — смотрите отправку почты в BitrixVM: там журнал msmtp и проверка почтового сервера.

Проверяли по первоисточнику: документация 1С-Битрикс

Частые вопросы

В настройках модуля стоит один адрес, а письма уходят от другого.

Значение из главного модуля — последнее в очереди. Его перекрывает адрес сайта, к которому привязан почтовый шаблон, а адрес, вписанный прямо в поле «От кого» этого шаблона, перекрывает оба. Начинайте проверку с шаблона конкретного письма, а не с настроек модуля.

Можно ли отправлять письмо от адреса клиента, заполнившего форму?

Технически поле это позволяет, но почтовые фильтры считают такое письмо подделкой: ваш сервер отправляет от имени чужого домена. Адрес клиента ставят в «Обратный адрес» — тогда ответ уйдёт ему, а отправителем остаётся ваш ящик.

Письма висят со статусом N и не отправляются.

Очередь никто не разбирает. Если в dbconn.php объявлена константа BX_CRONTAB_SUPPORT, обработчик запускается только из крона: проверьте, что задание с cron_events.php существует и выполняется. Пока оно не работает, письма копятся без единой ошибки в журнале.

Как отправить письмо повторно?

Сбросить статус SUCCESS_EXEC обратно в N для нужной записи b_event — на следующем проходе обработчик возьмёт её снова. Массовый сброс всех F делать не стоит: если причина сбоя не устранена, вы получите те же ошибки и лишнюю нагрузку.

Где посмотреть, какие вообще письма рассылает сайт?

Настройки → Настройки продукта → Почтовые шаблоны: там все шаблоны с привязкой к сайту и типу события. Список самих типов — на странице «Типы почтовых и СМС событий». Шаблон можно выключить флажком «Активен», не удаляя.