Laravel отправка почтовых уведомлений, полезные советы

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

Laravel поставляется с очень удобным шаблоном для отправки писем, который мы используем во многих проектах, почти не меняя его.

Давайте же разберёмся с отправкой уведомлений в Ларавел. Для того, что бы создать новое уведомление просто выполните следующую команду:

php artisan make:notification NewInvoice

Это создаст файл NewInvoice в папке «app / notifications»

Для отправки уведомления мы используем следующий код:

Notification::send($users, new NewInvoice($invoice));
// или
$user->notify(new NewInvoice($invoice);

Базовая структура, которую мы используем в большинстве случаев выглядит примерно так:

public function toMail($notifiable)
{
   $url = url('/invoice/'.$this->invoice->id);

   return (new MailMessage)
     ->greeting('Привет!')
     ->line('Вы получили новый счёт на оплату!')
     ->action('Посмотреть', $url)
     ->line('Ваше супер приложение yourapp.com');
}

Наверняка вы знаете, что в Ларавел можно переопределять шаблоны любого пакета, для этого достаточно «опубликовать» их в папке вашего приложения, в этом нам поможет консольная команда:

php artisan vendor:publish --tag=laravel-notifications

// и затем

php artisan vendor:publish --tag=laravel-mail

Мы рассмотрели базовые приёмы для отправки уведомлений в Ларавел, а теперь перейдём к его расширенным возможностям.

Трюки и подсказки

Это список всех доступных параметров:

  • greeting(string $text)
  • salutation(string $text)
  • line(\Illuminate\Contracts\Support\Htmlable|string|array $text)
  • success()
  • error()
  • level(‘info’) //’info’,’success’,’error’
  • subject(string $text)
  • action(string $text, string $url)

Пример использования всех возможных комбинаций:

public function toMail($notifiable)
{
    return (new MailMessage)
      ->subject('Lorem ipsum')
      ->greeting('Greeting Victor Yoalli!')
      ->salutation(new HtmlString('<strong>Salutation</strong> Victor Yoalli!'))
      ->line('Line of Plain Text')
      ->with(new HtmlString('<b>new HtmlString</b>("using with.")'))
      ->action('Notification Action', url('/'))
      ->line(new HtmlString(‘<b>new HtmlString</b>("using <i>line</i>.")'))
      ->line(['array of elements:[','uno','dos','tres',']using line'])
      ->level('info')
      ->error()
      ->success()
      ->line('Thank you for using our application!');
}

Давайте разбиратся, за что отвечает каждая функция:

  • subject() — Тема письма
  • greeting() — Начало письма в независимости от позиции в коде
  • salutation() — Конец пиьсьма footer в независимости от позиции в коде
  • line() — Строка которая принимает 3 типа данных, текст, html разметку и массив, в примере выше есть все 3
  • with() — работает аналогично line()
  • action() — кнопка действия в базовом шаблоне. Используется только один раз, при повторном использовании выводит только последний результат
  • error() — меняет цвет кнопки action() на красный,
  • success() — на зеленый, а по умолчанию у кнопки action() синий.
  • level() — принимает параметры аналонично функиям выше ‘info’,’error’ или ‘success’.

Update cookies preferences