Почта (отправить email)
Настройки
Настройки почты указываются в файле .env.
Если надо отправлять почту с текущего сервера, то надо убедиться, что указан следующий параметр:
# .env MAIL_DRIVER=smtp
Шаблон
Шаблон письма генерируется через команду 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
В итоге на почту прийдёт следующее письмо.
Для изменения шапки и подвала письма, надо выполнить команду ниже, которая скопирует файлы шаблона письма в папку resources/views/vendor/mail/.
php artisan vendor:publish --tag=laravel-mail
В итоге будет создан файл «resources/views/vendor/mail/message.blade.php», в котором можно задать шапку и подвал письма.
Исходные файлы шаблона письма находятся в папке «vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/».
Также можно указать дополнительные элементы для почты.
Отправка почты
Почта отправляется через метод 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».
Авторизуйтесь, чтобы добавлять комментарии