Laravelのメールの追加時にすることメモ

メールの初期設定は終わっていることが前提

 

1.artisanコマンドでmailableクラスを生成する

php artisan make:mail XXXMail

 

  以下にファイルが作成される

laravel
├ app
│ ├─ Mail
│ │ └─ XXXMail.php

 

2.作成したファイルに以下のような感じで記載

public function __construct($name, $body)
{
  $this->name = $name;
  $this->body = $body;
}


public function build()
{
  return $this
    ->subject('お問い合わせを承りました') 
    ->markdown('mailtemplate.contactmail') ←★使用するテンプレ
    ->with([
        'name' => $this->name,
        'body' => $this->body,
     ]);
}

 

3.コントローラーには以下のような感じで記載

use App\Mail\XXXMail;←★1で作成したクラス名
use Illuminate\Support\Facades\Mail;

 

$name = $request->name;
$body = $request->body;
$to = [
    [
     'name' => $request->name,
     'email' => $request->email
    ]
   ];
$cc = env('MAIL_FROM_ADDRESS');
Mail::to($to)
   ->send(new XXXMail($name, $body)); ←★2で作成したクラス

// 二重送信防止
$request->session()->regenerateToken();

return view('contact.complete');

 

 4.テンプレートは、/resources/views/ 2で書いた位置 に作成

@component('mail::message')
{{$name}}様   ←★2で->with()で渡した変数が使える

以下のお問い合わせを承りました。
回答までしばらくお待ちいただけますようお願い致します。

----------------------------------

{!! nl2br($body) !!}  ←★2で->with()で渡した変数が使える

----------------------------------

{{--@component('mail::button', ['url' => ''])

@endcomponent--}}

@endcomponent

 

以上