Все эти «почтовые уведомления в 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 скажет «ага, шифрование не то, держи спам».
Где реально больно
- SPF/DKIM/DMARC — забудь про нормальную доставку, если не настроишь. Laravel тут ни при чём, но именно тебе разгребать эту хрень.
- Очереди — попробуй отправить 500 писем синхронно. Сервер просто ляжет и будет валяться. Без очередей — смерть.
- Логи — готовься жить в
storage/logs/laravel.log, потому что ошибок типа «connection timed out» будет больше, чем нормальных сообщений.
Итог
Почтовые уведомления в Laravel — это не магия и не «удобный механизм». Это всего лишь обёртка над драйверами, у которых миллион проблем. Laravel сам по себе хорош: ты реально можешь накидать уведомления за 5 минут. Но потом начинается взрослая жизнь: SMTP шлёт тебя нахрен, спам-фильтры жрут письма, очереди подвисают.
0 комментариев