Формы и почта
Сайт не отправляет письма: что проверить кроме PHP mail
С сайта не приходят уведомления, заявки или письма для входа. Начните с проверки того, отправлялось ли письмо вообще и какой сервис должен его доставить.
Что происходит и с чего начать
Отправка почты состоит из двух задач: сайт формирует сообщение, а почтовая служба принимает и доставляет его. Наличие функции отправки в коде ещё не означает, что на хостинге настроена рабочая почта. При этом причина может быть совсем рядом: неверный адрес получателя, выключенное уведомление или неработающая очередь. Полезно выбрать один тип письма и проверить его путь. Массовая смена всех почтовых настроек затруднит поиск и может сломать другие уведомления.
Что можно проверить самостоятельно
- Выберите простое уведомление и вызовите его один раз. Запишите тему, время и адрес получателя; проверьте нежелательные письма, правила сортировки и заполненность ящика.
- Посмотрите, есть ли в панели сайта журнал отправки. Различайте состояния «задача создана», «передано почтовому серверу» и «ошибка»: они означают разные этапы.
- Уточните, как сайт отправляет почту: через SMTP, внешний почтовый сервис или средствами хостинга. Если не знаете, передайте этот вопрос разработчику или поддержке хостинга.
Как понять результаты проверки
SMTP — способ передать письмо почтовому серверу с заданными адресом подключения и учётными данными. Ошибка соединения означает, что сайт до него не добрался; отказ авторизации — что подключение есть, но вход не принят. Если сервер принял письмо, а получатель его не видит, исследуют дальнейшую доставку, а не кнопку формы. Название функции PHP mail в настройках описывает механизм вызова, но не гарантирует наличие настроенной системы доставки за ним.
Что проверяет разработчик
Для этой части понадобятся доступ к настройкам, журналам ошибок или коду. Её можно передать специалисту вместе с результатами предыдущих шагов.
- Уточните, как приложение отправляет почту: локальной почтовой службой или через внешний SMTP. После переезда старый способ может отсутствовать на новом сервере.
- Найдите попытку отправки в журнале приложения и почтового транспорта. Запишите код отказа, имя сервера и время, исключив пароли и полный текст заявки.
- Сравните доставку на два независимых почтовых домена. Отказ только одного получателя требует проверки его ответа и аутентификации отправляющего домена.
На что обратить внимание
Приложение может передать сообщение локальной очереди, после чего оно останется там из-за сетевого ограничения или ошибки адресации. Отдельная ситуация — сообщение принято удалённым сервером, но отфильтровано им.
Как исправляют причину
Настройте доступный на хостинге транспорт и согласуйте адрес отправителя с учётной записью. Включите журнал результата отправки без секретов. Не подставляйте адрес посетителя в From: для ответа посетителю используйте Reply-To.
Как убедиться, что проблема решена
Проверьте доставку обычного уведомления и письма восстановления пароля. Убедитесь, что ссылка в последнем ведёт на рабочий домен и письмо не задерживается в очереди.
Проверяйте не только тестовую кнопку почтового плагина, но и реальное уведомление сайта: заказ, обращение или восстановление пароля. Они могут использовать разные настройки и очереди. Сохраните результат проверки и понятное место, где видны будущие отказы. Если сообщения уходят с задержкой, её нужно объяснить и измерить, а не считать отсутствие мгновенного письма случайностью.