Перейти к основному содержимому

Email не отправляется

Пошаговое устранение проблем с доставкой email.


Шаг 1: Проверьте основное

# Проверить настройки SMTP в .env
grep MAIL_ .env

Убедитесь, что:

  • MAIL_MAILER=smtp (не log или null)
  • MAIL_HOST указан верно
  • MAIL_PORT указан верно (587 для TLS, 465 для SSL)
  • MAIL_USERNAME и MAIL_PASSWORD заполнены
  • MAIL_ENCRYPTION=tls (или ssl)

Шаг 2: Проверьте через панель администратора

  1. Перейдите в Admin > Settings > Email
  2. Нажмите Send Test Email
  3. Проверьте сообщение об ошибке, если отправка не удалась

Шаг 3: Проверьте через командную строку

php artisan tinker
Mail::raw('Test', function ($m) {
$m->to('[email protected]')->subject('Test');
});

Проверьте storage/logs/laravel.log на наличие ошибок.


Распространённые проблемы

ПроблемаРешение
«Connection timed out»Порт 587/465 заблокирован хостингом. Попробуйте порт 2525 или обратитесь к хостинг-провайдеру.
«Authentication failed»Неверное имя пользователя/пароль. Для Gmail используйте Пароль приложения.
«Certificate verify failed»Старый PHP. Попробуйте добавить 'verify_peer' => false в параметры почтовика в config/mail.php.
Письма попадают в спамДобавьте DNS-записи SPF, DKIM и DMARC.
Задержка писемИспользуете QUEUE_CONNECTION=database? Убедитесь, что воркер очереди запущен.
Нет ошибки, но письма не приходятИспользуете MAIL_MAILER=log? Письма записываются в лог, а не отправляются. Проверьте storage/logs/laravel.log.

Использование MAIL_MAILER=log для отладки

Установите MAIL_MAILER=log в .env, чтобы все письма записывались в файл лога вместо отправки. Полезно для проверки содержимого писем без влияния на реальных получателей.


Следующие шаги