Все эти «почтовые уведомления в Laravel позволяют легко и удобно…» можешь оставить для документации, которую никто не читает. В реальности это выглядит так: ты ковыряешься в .env, дерёшься со своим SMTP и думаешь, какого чёрта письмо опять не ушло. Laravel, конечно, даёт красивую обёртку, но баги и подлянки никуда не деваются.

Настройка: где начнётся головняк

Да, Laravel любит магию: «пропиши MAIL_MAILER и оно само заработает». Ага, конечно. В бою это превращается в вечное шаманство.

Типичный .env:

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525 MAIL_USERNAME=test
MAIL_PASSWORD=secret
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@project.local
MAIL_FROM_NAME="Project" 

И вот угадай, что произойдёт? Почти всегда — ничего. Потому что либо твой SMTP режет соединение, либо шифрование не то, либо пароль кривой. И вместо «магии Laravel» ты сидишь с tcpdump или Mailhog и думаешь, когда жизнь пошла под откос.

Создание уведомления: Laravel сделал красиво, но без души

Тут всё стандартно:

php artisan make:notification WelcomeUserNotification

Laravel создаст заготовку, и ты будешь писать внутри метод toMail.

public function toMail($notifiable)
{
    return (new MailMessage)
        ->line('Welcome, ублюдок!')
        ->action('Зайди сюда', url('/'))
        ->line('И спасибо, что ты вообще к нам пришёл.');
}

Смотрится прикольно, будто ты пишешь письмо для живого человека. Но если честно — это синтаксический сахар. В реальности всё упрётся в твой драйвер. Если Mailgun решит «а не отрубить ли нам твой ключик?», то хоть обрисуйся, письмо не уйдёт.

Отправка уведомления: магия на минималках

Laravel любит, чтобы ты верил в чудеса:

$user->notify(new WelcomeUserNotification);

И вроде бы должно быть счастье. Но тут начинается лотерея: письмо уйдёт, но попадёт ли оно в inbox или в спам? Это уже не Laravel, а твой геморрой.

И да, готовься, что на проде у тебя будет разница в доставке. Локально всё «летает», а на бою Gmail скажет «ага, шифрование не то, держи спам».

Где реально больно

  1. SPF/DKIM/DMARC — забудь про нормальную доставку, если не настроишь. Laravel тут ни при чём, но именно тебе разгребать эту хрень.
  2. Очереди — попробуй отправить 500 писем синхронно. Сервер просто ляжет и будет валяться. Без очередей — смерть.
  3. Логи — готовься жить в storage/logs/laravel.log, потому что ошибок типа «connection timed out» будет больше, чем нормальных сообщений.

Итог

Почтовые уведомления в Laravel — это не магия и не «удобный механизм». Это всего лишь обёртка над драйверами, у которых миллион проблем. Laravel сам по себе хорош: ты реально можешь накидать уведомления за 5 минут. Но потом начинается взрослая жизнь: SMTP шлёт тебя нахрен, спам-фильтры жрут письма, очереди подвисают.