LaravelではMailableクラスを使用することで、メールの組み立てと送信を簡単に行うことができます。
Mailableクラスを作成するには、artisanコマンドを使うと簡単です。
$ php artisan make:mail MyMailable
このコマンドを実行すると、app/Mail/MyMailable.phpというファイルが作成され、中身は次のようになります。
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class MyMailable extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('view.name');
}
}
buildメソッドの戻り値として、レンダリングされたテンプレートを返すことで、メッセージの送信が完了します。
メッセージの送信後に実行したい処理がある場合は、Mailableクラスのcallbacksプロパティ(配列)に関数をセットします。コールバック関数の引数には$message(Messageオブジェクト)が渡されるため、$message->getId()でメールサーバーから返されたMessage-IDを取得することもできます。
public function build()
{
$this->callbacks[] = function($message) {
// 送信後に実行したい処理
};
return $this->view('view.name');
}