Заявка с сайта оформлена, а письмо клиенту не пришло. Менеджер не получил уведомление о заказе. Восстановление пароля «висит», а письмо лежит в «Спаме». Если такое случается регулярно — проблема не в почтовом сервисе клиента, а в настройках вашего сайта.
В статье — два рабочих способа настроить отправку и пошаговые чек-листы, чтобы проверить результат прямо из админки 1С-Битрикс. Без сложной теории, по делу.
Почему письма не доходят
Современные почтовые сервисы (Gmail, Яндекс, Mail.ru, корпоративные почты на Microsoft 365) с 2024 года ужесточили требования к входящим письмам. Если письмо не подтверждает, что отправлено с разрешённого сервера — оно либо попадает в спам, либо отбрасывается совсем.
Три самых частых причины проблемы:
- Сервер сайта отправляет письма от имени домена, который ему «не разрешал» этого делать. Почтовик получателя видит: «Письмо якобы от @вашдомен.ru, но прилетело с непонятного IP» — и помечает его как спам.
- На стороне сайта используется системный sendmail, но в DNS нет SPF-записи. Технически письмо уходит, но получатель ему не доверяет.
- Адрес отправителя — публичный (
@gmail.com,@yandex.ru), а отправляется он с сервера хостинга. Для публичных доменов это запрещено политикой почтовых сервисов — такие письма отбрасываются почти всегда.
Дальше — как это починить.
Шаг 1. Диагностика: почему именно у вас не отправляется
Прежде чем что-то настраивать, нужно понять, на каком этапе ломается отправка. Пройдитесь по списку — это займёт 10 минут.
Чек-лист первичной диагностики
-
Проверьте, что письма вообще уходят с сайта.
В админке откройте Настройки → Инструменты → Командная PHP-строка и выполните:$result = bxmail( 'ваш-личный@email.ru', 'Тест отправки с сайта', 'Если письмо пришло — sendmail работает.' ); var_dump($result);Если в ответе
bool(true)— сервер письмо принял. Еслиbool(false)— проблема на уровне сервера (пишите в техподдержку хостинга). -
Проверьте журнал событий в Битриксе.
Настройки → Инструменты → Журнал событий. Фильтр по типу «MAIL». Если там ошибкиMAIN_MAIL_SEND_ERROR— письмо не ушло с сервера. Если ошибок нет, но письма не приходят — проблема на стороне получателя (SPF, попадание в спам). -
Посмотрите, от какого адреса уходят письма.
Настройки → Настройки продукта → Настройки модулей → Главный модуль, поле «E-Mail администратора по умолчанию». Этот адрес обязательно должен быть на вашем домене (например,info@вашдомен.ru), а не@gmail.comили@yandex.ru. Публичные почтовые сервисы письма с чужих доменов давно блокируют. -
Проверьте «Почтовые шаблоны» и «Почтовые события».
Настройки → Настройки продукта → Почтовые и СМС события → Почтовые шаблоны. У каждого шаблона в поле «От кого» должен стоять адрес на вашем домене (или переменная#DEFAULT_EMAIL_FROM#, которая берёт значение из настроек модуля). -
Запросите у получателя «исходник письма».
Если письмо всё-таки дошло, но падает в спам — попросите получателя открыть полные заголовки письма (в Gmail: «Показать оригинал», в Яндексе: «Свойства письма»). Ищите строки:SPF: FAIL (или SOFTFAIL, или NONE) DKIM: FAIL (или NONE) DMARC: FAILPASS— хорошо, всё остальное — причина попадания в спам.
После этой диагностики обычно понятно одно из двух: или письма не уходят с сервера (тогда работа с хостингом), или уходят, но почтовики им не доверяют. Второй случай решается одним из двух способов ниже.
Способ 1. Настройка SPF-записи в DNS
Когда подходит: сервер хостинга умеет отправлять письма (sendmail работает), почтовый ящик отправителя физически живёт где угодно, но письма уходят с IP-адреса вашего сервера.
Что делает: SPF (Sender Policy Framework) — это запись в DNS, в которой вы публично объявляете: «Письма от моего домена разрешено отправлять с таких-то серверов». Почтовик получателя сверяет IP отправителя с этим списком — если совпадает, пропускает письмо.
Как настроить
-
Узнайте IP-адрес сервера сайта.
В админке Битрикса откройте Настройки → Инструменты → Командная PHP-строка:echo $_SERVER['SERVER_ADDR'];Или спросите у хостинг-провайдера в личном кабинете.
-
Добавьте SPF-запись в DNS-зоне домена.
Это делается в панели управления у регистратора домена (или там, где у вас управляется DNS — например, в панели хостинга, у Cloudflare, beget, reg.ru).Создайте TXT-запись:
Поле Значение Тип TXT Имя / Хост @(или оставьте пустым — это корень домена)Значение v=spf1 ip4:ВАШ.IP.СЕРВЕРА.ТУТ ~allTTL 3600 Параметры TXT-записи для SPF Пример готовой записи, если ваш сервер —
185.22.155.10:v=spf1 ip4:185.22.155.10 ~allЕсли на домене уже есть SPF-запись (например, от Яндекс.Почты для домена) — её нельзя дублировать. Нужно объединить значения в одну запись. Пример объединённой записи (сервер + Яндекс.Почта):
v=spf1 ip4:185.22.155.10 include:_spf.yandex.net ~allДля Mail.ru:
include:_spf.mail.ru. Для Google Workspace:include:_spf.google.com. -
Дождитесь обновления DNS.
Обычно 15–30 минут, в редких случаях — до 24 часов.
Чек-лист проверки, что SPF работает
-
Проверка через консоль (для самых нетерпеливых).
В Битриксе откройте Настройки → Инструменты → Командная PHP-строка:$records = dns_get_record('вашдомен.ru', DNS_TXT); foreach ($records as $r) { if (strpos($r['txt'], 'v=spf1') !== false) { echo $r['txt']; } }Если в ответе появилась ваша SPF-запись — DNS обновился.
-
Проверка через онлайн-сервисы.
Откройте mxtoolbox.com/spf.aspx или dmarcian.com/spf-survey/ и введите домен. Сервис покажет, корректна ли запись и какие серверы разрешены. -
Отправьте тестовое письмо и проверьте заголовки.
Через PHP-строку отправьте письмо себе на Gmail или Яндекс:bxmail('ваш-личный@gmail.com', 'SPF тест', 'Проверяем заголовки.');Откройте письмо у получателя → «Показать оригинал». В заголовках должно быть:
spf=pass Received-SPF: passЕсли
pass— SPF настроена правильно. Еслиfailилиsoftfail— перепроверьте IP в DNS-записи. -
Контрольный тест через mail-tester.com.
Зайдите на mail-tester.com, скопируйте предложенный там тестовый адрес и отправьте на него письмо с сайта. Сервис покажет оценку от 0 до 10. Меньше 8 — есть что улучшать.
Способ 2. Отправка через встроенный SMTP-клиент 1С-Битрикс
Когда подходит: у вас есть настоящий почтовый ящик (на Яндекс 360, Mail.ru для бизнеса, корпоративный Exchange, или у любого другого провайдера) — и вы хотите, чтобы письма с сайта уходили именно через него. Это самый надёжный способ: письма физически отправляются с того сервера, который и так разрешён владельцу ящика.
Плюсы: не нужно лезть в DNS, письма выглядят как обычная корпоративная переписка, доставляемость почти 100%.
Минусы: нужен реальный почтовый ящик и его пароль (или пароль приложения для Яндекса и Google).
Как настроить
-
Подготовьте данные SMTP-сервера.
Возьмите у провайдера почты. Для популярных:- Яндекс 360 для бизнеса:
smtp.yandex.ru, порт465, SSL, логин — полный email, пароль — отдельный «пароль приложения» (создаётся в настройках Яндекс ID). - Mail.ru для бизнеса:
smtp.mail.ru, порт465, SSL. - Google Workspace:
smtp.gmail.com, порт465, SSL, пароль — «пароль приложения». - Любой другой провайдер: смотрите его документацию по SMTP.
- Яндекс 360 для бизнеса:
-
Включите модуль «Почтовый клиент».
Он входит в стандартную поставку Битрикса. Проверить можно через Marketplace → Установленные решения — модуль называетсяmail. -
Добавьте почтовый ящик в Битриксе.
Откройте Настройки → Настройки продукта → Почтовые и СМС события → Настройки SMTP.Заполните:
- Имя ящика
- Адрес e-mail (от которого будут уходить письма с сайта)
- Сервер SMTP, порт, SSL — из шага 1
- Логин и пароль
- Поставьте галку «Использовать этот ящик для отправки писем с сайта»
-
Включите использование SMTP в системных функциях отправки.
По умолчаниюbxmailиспользует системный sendmail. Чтобы переключить его на SMTP, в Настройки → Настройки продукта → Настройки модулей → Главный модуль поставьте галку «Использовать почтовый клиент для отправки писем» и выберите созданный ящик.В некоторых редакциях этой галки нет — тогда добавьте в
/bitrix/.settings.php(или попросите программиста) блок:'smtp' => [ 'value' => [ 'enabled' => true, 'from' => 'info@вашдомен.ru', 'server' => 'ssl://smtp.yandex.ru', 'port' => 465, 'protocol' => 'ssl', 'login' => 'info@вашдомен.ru', 'password' => 'пароль-приложения', ], 'readonly' => false, ], -
Обновите адрес «От кого» в шаблонах писем.
В Настройки → Настройки продукта → Почтовые и СМС события → Почтовые шаблоны проверьте, что во всех активных шаблонах поле «От кого» совпадает с адресом подключённого SMTP-ящика. Иначе SMTP-сервер отклонит письмо с ошибкой «отправитель не совпадает с логином».
Чек-лист проверки, что SMTP работает
-
Тест отправки из админки.
В Настройки → Инструменты → Командная PHP-строка:use Bitrix\Main\Mail\Mail; $result = Mail::send([ 'TO' => 'ваш-личный@gmail.com', 'SUBJECT' => 'SMTP тест из Битрикса', 'BODY' => 'Если письмо пришло — SMTP настроен правильно.', 'CHARSET' => 'utf-8', 'CONTENT_TYPE' => 'text/plain', ]); var_dump($result);true— отправка прошла.false— смотрите следующий пункт. -
Проверка журнала событий.
Настройки → Инструменты → Журнал событий, фильтр по типу «MAIL». Самые частые ошибки и что с ними делать:SMTP authentication failed— неверный логин/пароль. Для Яндекса и Google проверьте, что используете «пароль приложения», а не обычный пароль от почты.Connection refused— порт закрыт хостингом. Попросите хостера открыть исходящий 465/587.Sender address rejected— адрес «От кого» в письме не совпадает с логином SMTP. Поправьте шаблоны.
-
Отправка через стандартный механизм Битрикса.
Имитируйте реальную ситуацию — например, восстановите пароль на сайте на свой тестовый email. Письмо должно прийти от того же адреса, что в SMTP-настройках. -
Контрольный тест через mail-tester.com.
Так же как для SPF — отправьте письмо на адрес от mail-tester.com и проверьте оценку. Через SMTP она обычно 9–10 из 10.
Что выбрать: SPF или SMTP
Коротко: SMTP — надёжнее, но требует настоящего ящика. SPF — проще, но работает только если sendmail на сервере уже корректно отдаёт письма.
- Если у вас есть корпоративная почта (Яндекс 360, Mail.ru для бизнеса) — используйте SMTP, это закроет проблему гарантированно.
- Если корпоративной почты нет, а сайт небольшой и писем мало — настройте SPF, этого обычно достаточно.
- Для интернет-магазинов с большим объёмом транзакционных писем — SMTP + дополнительно настройка DKIM и DMARC (об этом отдельная статья).