ドライバーを設定
.envファイルを編集
または、config/mail.php を直接編集してもOK
// .env MAIL_DRIVER=smtp MAIL_HOST=smtp.sendgrid.net MAIL_PORT=587 MAIL_USERNAME=SendGridのユーザー名 例)xxx@kke.com MAIL_PASSWORD=SendGridのパスワード MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=tanaka@sample.com MAIL_FROM_NAME=田中太郎
mailableクラスをコマンドで作成
コマンドで下記を実行すると「app/Mail/TestMail.php」が生成される。
php artisan make:mail TestMail
生成された TestMail.php を編集
Viewテンプレートは、「resources/views/emails/test.blade.php」を利用する。
$this->subject('テストメールの件名です。')->view('emails.test');
Viewファイル「test.blade.php」を作成
吉田 様
// %name% 様 // SMTP APIで置き換える場合
本文ですよ。
メールを送信する
コントローラ内で下記を記述する。
Mail::to('yoshida@sample.com')->send(new TestMail());
SMTP APIを利用する方法
sendgrid.kke.co.jp/docs/API_Reference/SMTP_API/using_the_smtp_api.html
TestMail.php で下記のように記述する。
/** * Build the message. * * @return $this */ public function build() { $this->to('yoshida@sample.com') ->subject('テストメール') ->view('emails.html') // html形式 ->text('emails.plain') // プレーンテキスト形式 ->withSwiftMessage(function ($message) { $smtpapi = [ 'to' => [ 'tanaka@sample.com', 'sato@sample.com', 'yamada@sample.com', ], 'sub' => [ '%name%' => [ '田中', '佐藤', '山田', ] ] ]; $message->getHeaders() ->addTextHeader('x-smtpapi', json_encode($smtpapi, JSON_PRETTY_PRINT)); }); }
コントローラからMailableクラスに値を渡す方法
件名をコントローラから渡してみる。
コントローラ
use App\Mail\TestMail; use Illuminate\Support\Facades\Mail;
$subject_text = '件名ですよ'; Mail::to('yoshida@sample.com')->send(new TestMail($subject_text));
TestMail.php
class TestMail extends Mailable { use Queueable, SerializesModels; public $subject_text = ''; /** * Create a new message instance. * * @return void */ public function __construct($subject_text) { $this->subject_text= $subject_text; } /** * Build the message. * * @return $this */ public function build() { $this->subject($this->subject_text)->view('emails.test'); } }
メールテンプレートを更新しても反映されない場合
キャッシュが効いている可能性がある。下記コマンドで削除する。
php artisan view:clear