Udemyのオススメ講座はこちら 詳細を見てみる

【Laravel】Mailableを使って複数宛先にメールを送信する2つの方法

  • URLをコピーしました!

Laravelでメール送信機能を実装する場合には、Mailableクラスを使うことで比較的簡単に実装することができる。

この記事ではMailableクラスを使って複数宛先にメールを送信する2つの方法を紹介する。(意外とググっても出てこなかったのでググるまでもない内容かもしれないが残しておく)

全然難しい話ではないのでサクッと読める記事です。

目次

Mailableを使って複数宛先にメールを送信する2つの方法

この記事で紹介する2つの方法というのはユースケース自体が以下のとおり異なる。

  • 1つのメールのTo(CC, BCCと同じ概念の中のTo)の中に複数の宛先を指定する(=総送信メール数は1通)
  • 送信したい宛先毎に別々に同じ内容のメールを送信する(=総送信メール数は宛先数×1通)

というわけで上記2つのケースについて解説する。

前提は以下。

  • メール送信処理を呼ぶのはapp/Services/SendMailService.php
  • Mailableクラス名はapp/Mail/Sample.php
  • 宛先は4件

1つのメールのToの中に複数の宛先を指定する

1つのメールで複数のToに送信するサンプルコード↓

use App\Mail\Sample;

$emails = [
    'test1@example.com',
    'test2@example.com',
    'test3@example.com',
    'test4@example.com',
]

Mail::to($emails)->send(new Sample());

Mail::to()の引数に複数の宛先が入った配列を渡してあげることで1通のメールのToに複数のメールアドレスを設定することができる。

送信したい宛先毎に同じ内容のメールを送信する

送信したい宛先毎にメールを送信するサンプルコード↓

use App\Mail\Sample;

$emails = [
    'test1@example.com',
    'test2@example.com',
    'test3@example.com',
    'test4@example.com',
]

foreach ($emails as $email) {
    Mail::to($email)->send(new Sample());
}

1つの宛先ごとにメールを1通、今回でいうと合計4通送るためにforeachで繰り返し処理を行う方法。

Mail::to()の引数に宛先のメールアドレスを指定する。

(参考)それぞれの処理時間の比較

宛先を4件としてそれぞれの処理時間を比較してみた結果を残しておく。

コードの中身は実務ベースでMailableにコンストラクタに変数を渡してそれをメールテンプレート(bladeファイル)で使う構成である。

  • 1つのメールのToの中に複数の宛先を指定する:約2.8s
  • 送信したい宛先毎に別々に同じ内容のメールを送信する:約11.4s

当たり前っちゃ当たり前だが、後者の方が約4倍の処理時間がかかることがわかった。

最後

LaravelのMailableクラスを使って複数宛先にメールを送信する方法を紹介した。

Mail::to()の引数に渡す内容で挙動が以下のとおり変わることがわかった。

  • 配列を渡す:複数の宛先に送る(配列の要素が2つ以上の時)
  • 文字列を渡す:1つの宛先に送る(配列の要素が1つの場合はこっちに当てはまる)

Udemyのオススメ講座はこちら↓

TypeScript+Next.js+Laravelハンズオンはこちら↓

デスク周りのオススメアイテムはこちら↓

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

ブログを開設するなら「SWELL」が絶対オススメ!

この記事を書いた人

大学院(機械工学)→重工業→エンジニア→プロダクトマネージャー(PdM)兼エンジニア

神戸で「つながる勉強会」を運営↓
https://tsunagaru-kobe.connpass.com/

神戸グルメのインスタアカウントを運用しています。

目次