Проверить заявку в системе
Сохранилась ли она в БД/CRM/админке.
Практическая диагностика · формы и почта
Сообщение «успешно отправлено» означает только то, что frontend получил ожидаемый ответ. Оно не доказывает, что письмо сформировано, передано SMTP-серверу, принято почтовым провайдером и дошло до Inbox. Проверяем цепочку по этапам.
Быстрый маршрут
Сначала определяем, где заканчивается успешная часть цепочки.
Сохранилась ли она в БД/CRM/админке.
Был ли вызов mail/SMTP и какой ответ вернулся.
Нет ли опечатки, старого ящика или условной маршрутизации.
Письмо может быть доставлено, но отфильтровано.
Авторизация, SPF, DKIM и From должны быть согласованы.
Шаг 1
Если заявка есть в базе, Telegram, CRM или административном журнале, frontend и обработчик формы уже отработали. Тогда проблема находится после бизнес-логики — в формировании или доставке письма.
Если записи нет нигде, начинаем раньше: Network в браузере, endpoint, CSRF/captcha, JavaScript и серверный ответ.
Шаг 2
Функция приложения может вернуть success раньше реальной доставки или скрыть ошибку библиотеки. Настройте безопасный журнал: время, получатель, From, Message-ID и ответ SMTP без паролей и содержимого чувствительных полей.
Для WordPress полезно отличать успешный вызов wp_mail от фактической передачи внешнему SMTP.
Шаг 3
Почтовый сервер может отклонять неправильный логин, запрещённый From, превышение лимита или соединение с неподходящим типом TLS. Ошибка должна быть видна в SMTP-ответе.
Не стоит использовать адрес посетителя как From: домен отправителя должен быть вашим, а адрес клиента лучше ставить в Reply-To.
Шаг 4
Без корректных SPF/DKIM письма формы чаще попадают в спам или отклоняются строгими провайдерами. DMARC дополнительно проверяет согласование домена From с SPF/DKIM.
После переноса DNS или почты особенно важно сверить, не потерялись ли TXT/CNAME записи.
Шаг 5
Проверяем Spam/Junk, правила ящика, quarantine корпоративной почты и блокировки по содержимому. Если проблема только с одним доменом-получателем, сравниваем доставку на несколько независимых ящиков.
Код 250 от SMTP означает, что следующий сервер принял сообщение в обработку, но не гарантирует размещение во Inbox.
Практический пример
Пользователь видит успешную отправку, а заявка сохраняется в Telegram. Значит, backend уже получил данные, но почтовое уведомление ломается дальше.
В SMTP log видно отказ: приложение подставляет email посетителя в From, а почтовый сервер запрещает отправку от чужого домена. Меняем From на адрес сайта, email клиента переносим в Reply-To и проверяем SPF/DKIM.
| Этап | Результат |
|---|---|
| Frontend → backend | успешно |
| Сохранение заявки | успешно |
| SMTP | отказ по From |
| После исправления | SMTP принимает, письмо доходит |
Типовые сценарии
Разделите отправку формы и почтовую доставку — это сразу сокращает количество гипотез.
| Симптом | Вероятная зона | Что проверить |
|---|---|---|
| Заявка не сохранилась | форма/backend | Network, endpoint, server log |
| Заявка есть, попытки mail нет | логика приложения | условия уведомлений и queue |
| SMTP возвращает ошибку | авторизация/TLS/From | ответ сервера |
| SMTP 250, письма нет | фильтрация/репутация | spam, SPF/DKIM/DMARC |
| Не приходит одному получателю | его правила/провайдер | тест на другие ящики |
Чего не делать
Frontend не знает, куда почтовый сервер положил письмо.
DMARC и антиспам могут воспринимать это как подмену.
Нужно соответствовать настройкам провайдера и типу TLS.
Проблема может быть на принимающей стороне.
Чек-лист
Когда нужен доступ к проекту
Если заявка важна для бизнеса, лучше иметь доступ к логам формы и SMTP и сохранять данные независимо от email. Тогда диагностика не требует просить клиента повторно отправлять потерянную заявку.
Вопросы
Потому что интерфейс часто подтверждает только обработку запроса, а доставка email происходит дальше.
Можно, но управляемый SMTP обычно даёт более прозрачные логи и предсказуемую аутентификацию.
Адрес вашего домена, разрешённый почтовым сервером; email посетителя — в Reply-To.
Для важных лидов это полезная страховка: email становится уведомлением, а не единственной копией данных.