Laravelでメールの送信を行うには

メールを送信するには必要なこと

  • メールクラスの作成
  • キュー・ジョブの作成とワーカの起動(非同期処理を行うため)

メールクラスの作成

$ php artisan make:mail メールクラス

メール本文のView作成

resources/views/emails/index.blade.php

// Controllerの方でメールを送信する
Mail::to('user@email_address.com')
->cc('user@email_address.com') //必要に応じて
->bcc('user@email_address.com') //必要に応じて
->send(new メールクラス);

キュー・ジョブの作成

キューのテーブルを作成(databaseキュードライバを使用する場合)
※0001_01_000002_create_jobs_table.phpがある場合は省略できます

$ php artisan make:queue-table
$ php artisan migrate

ジョブの作成

$ php artisan make:job ジョブクラス
// ジョブクラスのhandleメソッド内でメールの送信を行う
public function handle(): void
{
    Mail::to('test_mail_user@email.com')
        ->send(new TestMail);
}

ジョブの発火

必要な任意の所でジョブを発火させる

商品を購入して「ありがとうメール」をお送りする場合は、商品料金の支払いが成功した後にジョブを発火しておく必要があります。

ジョブクラス::dispatch();

ワーカの起動

$ php artisan queue:work

※別ウィンドウでコマンドを実行する

ワークはDBに溜まっているジョブを逐次処理していく役割です。処理されたジョブはDBから削除されます。

テスト

mailtrapサービスを利用すると簡単にテストメールを送信することが可能です。

Mailtrap: Email Delivery Platform
Email Delivery Platform to test, send and control email infrastructure in one place. Great for dev teams. Start today - ...

アカウント作成したら、laravelの設定をコピーして.envファイルにその情報を入れる

コメント

タイトルとURLをコピーしました