Laravel 5.5から利用可能になったEメール用テンプレートのレイアウトテストの紹介です。
Laravel 5.4から HTMLメールを Bladeテンプレート & markdownで記述する「Markdown Mailables」が加わり、HTML形式のメールが簡単にデザイン & 作成できるようになりました。ですが、デザインを確認するには 実際にメールを送信する必要がありました。
しかし、 Laravel 5.5 ( LTS ) から メール用のテンプレートが ローカル上から簡単に確認出来るようになりました。
Eメール用のテンプレート & クラスは ターミナル上からから ' artisan
' コマンドを使って作成します。
( 下のコマンドで HTMLメール用のクラスが ' app/Mail/TestMail.php
'、
テンプレート用ファイル ' resources/views/email/testmail.blade.php
' が 自動的に作成されます )
# メール用のクラス & テンプレートを作成
# php artisan make:mail クラス名 --markdown=テンプレートファイル名
php artisan make:mail TestMail --markdown=email.testmail
# カスタムテーマを割り当てたい場合は下記のコマンドでレイアウト用ファイルを発行できます
# * resources/views/vendor/mailにレイアウトファイルが発行
# php artisan vendor:publish --tag=laravel-mail
make:mail
コマンドで 作成されたメール用 Blade テンプレート
{{-- resources/views/email/testmail.blade.php --}}
@component('mail::message')
# Introduction
The body of your message.
@component('mail::button', ['url' => ''])
Button Text
@endcomponent
Thanks, <br>
{{ config('app.name') }}
@endcomponent
make:mail
で作成された メール用の PHPクラス
// app/Mail/TestMail.php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class TestMail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
// Databaseから取得したデータをテンプレートに通す場合は
// constructorから通します
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
// resources/views/email/testmail.blade.php テンプレートを呼び出し
return $this->markdown('email.testmail');
/* テンプレートに変数を通す場合は with()メソッドを使います
*
* return $this->markdown('email.testmail')
* ->with([
* 'test' => 'From テストクラス'
*/ ]);
}
}
Laravel 5.5から Route上で artisanコマンドで作成した メールのクラスを インスタンス化する事によって、メール用のViewがレンダリング可能になりました。
( テスト用に ' GET : /testmail
' でレンダリングさせてみました )
// routes/web.php
Route::get('/testmail', function(){
// routeから作成したメールクラスを呼び出し
return new App\Mail\TestMail;
});


以上が Laravel 5.5から利用可能になった HTMLメールのデザイン確認でした。会員登録後のEメール認証、ショッピングサイトであれば注文の確認、その他 色々なところで必要になる場面があるので 開発が楽になりそうです。
Laravel : Mail