– to, cc, bccなど宛先はcontrollerで書く
– mailableクラスのコンストラクターに引数を渡す
– constructorに初期値を設定し、callback関数でルートからプレビューを行うこともできる
– メール本文は、text, htmlどちらも可能。改行はbrタグ
### controller
use Illuminate\Support\Facades\Mail; use App\Mail\TestMail; public function index() { // $name = '山本太郎'; $date = '2020/02/11'; $status = '完了'; $to = 'test@gmail.com'; $cc = 'cc@gmail.com'; Mail::to($to) ->cc($cc) ->send(new TestMail($name, $date, $status)); return "its works"; }
### app/Mail/TestMail.php
$ php artisan make:mail TestMail
public function __construct($name='山田太郎', $date='2020/01/01', $status='テスト') { // $this->title = $date . 'テスト送信'; $this->date = $date; $this->name = $name; $this->status = $status; } /** * Build the message. * * @return $this */ public function build() { return $this ->from('from@example.com') ->subject($this->title) ->view('email.test')->with([ 'name' => $this->name, 'date' => $this->date, 'status' => $this->status, ]); }
### view
{{ $date }}<br> メール本文<br> {{ $name }}さんのステータスは{{ $status}}です
### routeプレビュー時
Route::get('/send', 'MailController@index'); Route::get('/send/preview', function(){ return new App\Mail\TestMail(); });
メールの送信方法と、メール内容の設定はMVCで切り離されているので、非常に管理しやすいように思います。