Laravel 5.5から利用可能になったEメール用テンプレートのレイアウトテストの紹介です。

 Laravel 5.4から HTMLメールを Bladeテンプレート & markdownで記述する「Markdown Mailables」が加わり、HTML形式のメールが簡単にデザイン & 作成できるようになりました。ですが、デザインを確認するには 実際にメールを送信する必要がありました。

しかし、 Laravel 5.5 ( LTS ) から メール用のテンプレートが ローカル上から簡単に確認出来るようになりました。
 

artisanコマンドでEメール用のテンプレートの作成 * Laravel 5.4共通 

 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 テストクラス'
         */        ]);
    }
}



HTMLメールのデザインを確認 * Laravel 5.5から利用可能 

 Laravel 5.5から Route上で artisanコマンドで作成した メールのクラスを インスタンス化する事によって、メール用のViewがレンダリング可能になりました。
( テスト用に ' GET : /testmail ' でレンダリングさせてみました )

// routes/web.php
Route::get('/testmail', function(){
  // routeから作成したメールクラスを呼び出し
  return new App\Mail\TestMail;
});

 

*  localhost:8000/testmail にブラウザでアクセス 

* スタイルを変更してもブラウザ上で 手早くレイアウトの確認が出来ます


Summary

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

Laravel : Mail

 

この記事のカテゴリ

プログラミング

この記事のタグ

Laravel , PHP

Socialシェアボタン

スポンサーリンク