Notifications на Email

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

Пример конфигурации канала mail в файле config/notifications.php для отправки Email сообщений через mail драйвер:

//..
'channels' => [
    'mail' => [
        'driver' => 'mail',
        'server' => 'smtp.example.com',
        'port' => 587,
        'login' => 'user@example.com',
        'password' => 'password',
        'from' => [
            'mail' => 'noreply@example.com',
            'name' => 'Your Application'
        ],
        'timeout' => 5,
    ],
],
//..
PHP

Создание уведомления

Для отправки уведомления на почту, необходимо определить метод toMail(mixed $recipient) который должен вернуть объект Imhotep\Notifications\Messages\MailMessage. Класс MailMessage содержит несколько простых методов, которые помогут создать гибкие email-сообщения. Давайте посмотрим на пример:

namespace App\Notifications;

use App\Models\User;
use Imhotep\Notifications\Notification;
use Imhotep\Notifications\Messages\MailMessage;

class MyMailNotification extends Notification
{
    public function via(mixed $recipient): array
    {
        return ['mail'];
    }

    public function toMail(mixed $recipient): MailMessage
    {
        $message = new MailMessage();
        
        // Устанавливает тему письма
        $message->subject('Welcome to Imhotep!');
        
        // Добавляет персонализированное приветствие,
        // обычно отображается как <h1>
        $message->greeting('Hello!');
        
        // Добавляет текстовую строку
        $message->line('Your the order №12345 created.');
        
        // Добавляет текстовую строку при выполнении условия
        $message->line(true, 'Your bonus available in profile.');
        
        // Добавляет разделительную пустую линию
        $message->newLine(); // Одна пустая строка
        $message->newLine(2); // Две пустые строки
        
        // Добавляет кнопку с действием
        $message->action('Read Docs', 'https://imhotep.dev/docs');
        
        // Использование View шаблона
        $message->view('emails.welcome', $data);
        
        // Приоритет сообщения
        $message->priority(4);
        
        // Добавить один или несколько email-адресов для обратного ответа
        $message->replyTo('john@example.dev');
        // или
        $message->replyTo('john@example.dev', 'John'); // Можно добавить имя отправителя
        // или
        $message->replyTo([ // Можно передать массив email-адресов
            'john@example.dev'
            ['jane@example.dev', 'Jane'] // Можно указать имя отправителя
        ]);
        
        // Добавить одного или нескольких получателей копий сообщения
        $message->cc('john@example.dev');
        // или
        $message->cc('john@example.dev', 'John'); // Можно добавить имя отправителя
        // или
        $message->cc([ // Можно передать массив email-адресов
            'john@example.dev'
            ['jane@example.dev', 'Jane'] // Можно указать имя отправителя
        ]);
        
        // Добавить одного или нескольких скрытых получателей копии сообщения
        $message->bcc('john@example.dev');
        // или
        $message->cc('john@example.dev', 'John'); // Можно добавить имя отправителя
        // или
        $message->cc([ // Можно передать массив email-адресов
            'john@example.dev'
            ['jane@example.dev', 'Jane'] // Можно указать имя отправителя
        ]);
        
        return $message;
    }
}
PHP