← Техническая поддержка

Сайт не отправляет письма: как проверить SMTP, почтовые события и DNS домена

Диагностика отправки писем с сайта SMTP и DNS

Ситуация «форма отправилась, но письмо не пришло» может возникнуть на нескольких уровнях. Сайт мог не сформировать почтовое событие, PHP не передал сообщение почтовому серверу, SMTP отклонил авторизацию, а получатель — поместил письмо в спам из-за проблем с DNS домена.

Поэтому проверять отправку почты нужно последовательно, а не менять сразу адрес отправителя, SMTP и DNS-записи.

Первый вопрос: сайт вообще создал письмо?

Если используется CMS, сначала проверяют саму бизнес-логику: создалось ли почтовое событие, выбран ли нужный почтовый шаблон, корректны ли поля получателя и отправителя. Ошибка на этом уровне означает, что до SMTP письмо вообще не дошло.

Следующий уровень — механизм отправки

Сайт может отправлять почту через локальный sendmail, SMTP-модуль или внешний почтовый сервис. Нужно точно понимать, какой механизм используется в конкретном проекте. Иначе тест одной функции покажет успех, а реальные письма будут уходить совершенно другим способом.

Что проверить в SMTP

  • адрес SMTP-сервера и порт;
  • тип шифрования;
  • логин и пароль;
  • разрешён ли указанный адрес From;
  • нет ли сетевой блокировки исходящего соединения;
  • что отвечает сервер при реальной попытке отправки.

Почему письма могут отправляться, но не доходить

Успешная передача на SMTP не гарантирует попадание во входящие. Дальше работают антиспам-фильтры получателя. Для доменной почты важны SPF, DKIM и DMARC, согласованность адреса отправителя и репутация сервера.

Если DNS-записи только что менялись, нужно учитывать время их распространения. В этот период разные почтовые серверы могут видеть старые и новые значения.

Не подменяйте диагностику повторной отправкой

Когда письмо не дошло, полезнее найти запись в журнале и ответ SMTP, чем нажимать «отправить ещё раз» десятки раз. Повторная отправка без понимания причины может привести к дублям, а исходная ошибка останется неизвестной.

Какие журналы нужны

  • журнал почтовых событий CMS;
  • лог SMTP или почтового модуля;
  • системный mail log, если используется локальный MTA;
  • ошибки PHP для кода, который формирует сообщение;
  • ответ внешнего почтового сервиса.

Проверяйте письмо целиком

Иногда проблема появляется только у конкретного шаблона: неправильный From, пустой To, слишком большое вложение или некорректный заголовок. Поэтому технический тест «mail() возвращает true» полезен, но не заменяет отправку того же типа письма, который не работает у пользователя.

Почтовая проблема считается найденной только тогда, когда понятен уровень сбоя: приложение, отправляющий сервер, DNS или принимающая сторона.

Практический порядок проверки

  1. Убедиться, что приложение создало событие и получателя.
  2. Определить реальный механизм отправки.
  3. Проверить ответ SMTP или локального почтового сервера.
  4. Проверить SPF, DKIM и DMARC домена.
  5. Посмотреть папку спам и технические заголовки полученного тестового письма.
  6. После исправления выполнить контрольную отправку тем же шаблоном.

Если проблема с почтой появилась одновременно с переносом сайта, дополнительно проверьте настройки нового сервера. Общий процесс переноса описан в статье о переносе сайта без длительного простоя.

Диагностика форм, SMTP, почтовых шаблонов и DNS входит в задачи технической поддержки сайта.

Спасибо. Ваше сообщение было успешно отправлено.
Мы свяжемся с Вами в ближайшее время.