РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
844 of 1392 menu

Класс MailMessage

Класс MailMessage предназначен для создания простых, но красивых почтовых уведомлений в Laravel. Он предоставляет удобный интерфейс для построения электронных писем без необходимости создавать отдельные классы Mailable. Этот класс особенно полезен при отправке уведомлений через систему уведомлений Laravel, где требуется быстро сформировать письмо с базовым форматированием.

Основное преимущество MailMessage заключается в использовании предопределённых Markdown-шаблонов, которые автоматически адаптируются под различные почтовые клиенты. Класс предоставляет методы для добавления приветствия, строк текста, кнопок действий и прощальной фразы. Все сообщения строятся на основе готового компонента mail::message, что обеспечивает единообразный стиль для всех уведомлений.

Синтаксис

<?php use Illuminate\Notifications\Messages\MailMessage; $mailMessage = new MailMessage(); $mailMessage->greeting('Hello!') ->line('This is a notification.') ->action('Visit Website', url('/')) ->salutation('Regards, Team'); ?>

Метод greeting - добавление приветствия

Метод greeting устанавливает приветственную фразу в начале письма. Если приветствие не задано, по умолчанию используется "Hello!".

<?php use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Support\Facades\Notification; use App\Models\User; $user = User::find(1); $mailMessage = (new MailMessage()) ->greeting('Welcome, ' . $user->name) ->line('Thank you for registering on our platform.') ->line('We are glad to see you here!'); Notification::send($user, new class($mailMessage) extends \Illuminate\Notifications\Notification { public function toMail($notifiable) { return $this->mailMessage; } }); ?>

Метод line - добавление строк текста

Метод line добавляет одну или несколько строк текста в тело письма. Каждая строка автоматически оборачивается в соответствующий HTML-тег при рендеринге Markdown-шаблона.

<?php use Illuminate\Notifications\Messages\MailMessage; $mailMessage = (new MailMessage()) ->greeting('Hello!') ->line('Your account has been successfully created.') ->line('Please verify your email address.') ->line('If you did not create this account, no further action is required.'); ?>

Метод action - добавление кнопки действия

Метод action добавляет кнопку с указанным текстом и ссылкой. Кнопка выделяется визуально и привлекает внимание пользователя к основному действию, которое необходимо выполнить.

<?php use Illuminate\Notifications\Messages\MailMessage; $resetLink = url('/password/reset', ['token' => 'abc123']); $mailMessage = (new MailMessage()) ->greeting('Password Reset Request') ->line('We received a request to reset your password.') ->action('Reset Password', $resetLink) ->line('This link will expire in 60 minutes.') ->salutation('Regards, Support Team'); ?>

Метод subject - установка темы письма

Метод subject позволяет явно задать тему письма. Если метод не вызван, тема письма будет сгенерирована автоматически на основе содержимого письма или класса уведомления.

<?php use Illuminate\Notifications\Messages\MailMessage; $mailMessage = (new MailMessage()) ->subject('Important: Account Verification') ->greeting('Hello!') ->line('Please verify your email address to continue.') ->action('Verify Email', url('/verify')) ->salutation('Best regards, Team'); ?>

Метод error - установка стиля ошибки

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

<?php use Illuminate\Notifications\Messages\MailMessage; $mailMessage = (new MailMessage()) ->error() ->greeting('Payment Failed') ->line('Your recent payment could not be processed.') ->line('Please update your payment information.') ->action('Update Payment', url('/payment')); ?>

Метод success - установка стиля успеха

Метод success делает оформление письма позитивным, используя зелёные тона для кнопок и акцентов. Этот метод полезен для подтверждения успешных действий.

<?php use Illuminate\Notifications\Messages\MailMessage; $mailMessage = (new MailMessage()) ->success() ->greeting('Welcome aboard!') ->line('Your account has been successfully created.') ->line('You can now access all features of our platform.') ->action('Go to Dashboard', url('/dashboard')) ->salutation('Enjoy your journey!'); ?>

Метод salutation - установка прощальной фразы

Метод salutation добавляет прощальную фразу в конце письма. По умолчанию используется "Regards, Laravel" если метод не вызван.

<?php use Illuminate\Notifications\Messages\MailMessage; $mailMessage = (new MailMessage()) ->greeting('Thank you!') ->line('Your subscription has been renewed.') ->salutation('With best wishes, Your Company Team'); ?>

Метод view - использование пользовательского шаблона

Метод view позволяет использовать собственный Blade-шаблон для письма вместо стандартного Markdown-шаблона. Это даёт полный контроль над внешним видом письма.

<?php namespace App\Http\Controllers; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Support\Facades\Notification; use App\Models\User; use Illuminate\Notifications\Notification; class NotificationController extends Controller { public function send() { $user = User::find(1); $mailMessage = (new MailMessage()) ->view('emails.custom', ['name' => $user->name]); Notification::send($user, new class($mailMessage) extends Notification { protected $mailMessage; public function __construct($mailMessage) { $this->mailMessage = $mailMessage; } public function toMail($notifiable) { return $this->mailMessage; } }); return response()->json(['message' => 'Notification sent']); } } ?>

Метод markdown - указание Markdown-шаблона

Метод markdown позволяет указать собственный Markdown-шаблон для письма, отличный от стандартного. Это полезно для создания уникального стиля уведомлений.

<?php use Illuminate\Notifications\Messages\MailMessage; $mailMessage = (new MailMessage()) ->markdown('vendor.notifications.email', [ 'color' => 'blue', 'name' => 'John Doe' ]) ->greeting('Custom greeting') ->line('This email uses custom markdown template.'); ?>

Полный пример использования в уведомлении

Рассмотрим полный пример создания класса уведомления с использованием MailMessage для отправки письма о подтверждении заказа.

<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; use App\Models\Order; class OrderConfirmation extends Notification { use Queueable; protected $order; public function __construct(Order $order) { $this->order = $order; } public function via($notifiable) { return ['mail']; } public function toMail($notifiable) { $total = $this->order->total; return (new MailMessage) ->success() ->subject('Order Confirmation #' . $this->order->id) ->greeting('Thank you for your order!') ->line('Your order has been successfully placed.') ->line('Order Number: ' . $this->order->id) ->line('Total Amount: $' . $total) ->action('View Order', url('/orders/' . $this->order->id)) ->line('We will notify you when your order ships.') ->salutation('Thank you for choosing us!'); } } ?>

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

Пример отправки созданного уведомления пользователю с использованием фасада Notification.

<?php namespace App\Http\Controllers; use App\Models\Order; use App\Models\User; use App\Notifications\OrderConfirmation; use Illuminate\Support\Facades\Notification; class OrderController extends Controller { public function store() { $order = Order::create([ 'user_id' => 1, 'total' => 150.00, 'status' => 'pending' ]); $user = User::find(1); Notification::send($user, new OrderConfirmation($order)); return response()->json(['message' => 'Order created and notification sent']); } } ?>

Смотрите также

  • класс Mailable,
    предназначенный для построения сложных почтовых сообщений
  • метод send,
    который отправляет уведомление получателю
  • метод notify,
    который отправляет уведомление модели
  • класс Notification,
    который управляет отправкой уведомлений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить