Почта

Настройки

Настройки почты указываются в файле .env.

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

# .env
MAIL_DRIVER=mail

Шаблон

Шаблон письма генерируется через команду artisan make:mail.

php artisan make:mail Feedback --markdown=emails.feedback

Данная команда создаёт два файла:

  • app/Mail/Feedback.php (настройки отправления письма);
  • resources/views/emails/feedback.blade.php (шаблон письма).

Параметр --markdown создаёт шаблон письма (файл «feedback.blade.php»).

<!-- resources/views/emails/feedback.blade.php -->
@component('mail:message')

# Заголовок

Текст сообщения

@endcomponent

В итоге на почту прийдёт следующее письмо.

Laravel. Почта

Шапка и подвал письма указываются в файле vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/message.blade.php.

Также можно указать дополнительные элементы для почты.

Отправка почты

Почта отправляется через метод Mail::to().

use Illuminate\Support\Facades\Mail;
use App\Mail\Feedback;
// …

Mail::to('example@domain.ru')->send(new Feedback());

В файле app/Mail/Feedback.php можно указать от кого приходит письмо.

# app/Mail/Feedback.php

public function build()
{
    return $this->from('noreply@domain.ru')->markdown('emails.feedback');
}

Отправка почты с параметрами

Передача параметров показана на примере ниже:

use Illuminate\Support\Facades\Mail;
use App\Mail\Feedback;
// …

$params = [
    'value' => 'Значение'
];

Mail::to('example@domain.ru')->send(new Feedback($params));

Эти параметры надо указать в файле app/Mail/Feedback.php.

# app/Mail/Feedback.php

public function __construct($params)
{
    $this->params = $params;
}

public function build()
{
    return $this->markdown('emails.feedback')->with($this->params);
}

В шаблоне письма параметры доступны через фигурные скобки {{ }}.

Текст письма
{{ $value }}

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

Чтобы при каждой правки не отправлять письмо на почту для её тестирования, можно открыть шаблон письма на указанной странице. Это указывается в файле routes/web.php.

# routes/web.php

Route::get('/mail-preview', function(){
    $params = [
        'value' => 'Значение',
    ];

    return new App\Mail\Feedback($params);
});

В коде выше, шаблон письма становится доступен по ссылке «/mail-preview».