2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravelでメールを送るときに使えるMailableとNotificationの違い

Last updated at Posted at 2025-09-11

AIにLaravelのコードを書いてもらっていたときにふと気づいたのですが、メール送信が2つのパターンで実装されている。
片方はMailable、もう片方はNotification。
どちらもメールは送られているけど何が違うんだ??と思ったので調べてみました。

結論

Mailableは細かいカスタマイズと送信が簡単にできるメール特化のクラス。
Notificationは通知を抽象化したクラスで、メールはあくまで機能の一つであり、主な責務は通知。

NotificationがMailableを使わなくてもメール送信できてしまうので、それで混乱していました。

ちなみにこれらは組み合わせて使用することも可能なので、Notificationで通知を行い、Mailalbeで送信メールの内容をコントロールするということができます。

MailableとNotificationの比較

結局組み合わせて使えるのですが、NotificationとMailableで具体的な機能にどのような差分があるのかを表にまとめてみました。

機能 Notification Mailable 備考
メール送信 どちらもメールを送信する基本機能を持つ
メール以外の方法でのメッセージ送信 Notification はSlackやDBへの通知もできる
CC / BCC の指定 Notification 単体では面倒
ファイル添付 Notification 単体では面倒
シンプルな定型文メール Notificationの場合、メソッド呼び出しだけで作れる

使い分けのイメージ

ユーザー登録やパスワードリセットなどのイベントに応じたメールを送る場合はNotificationを使用し、メルマガなどイベントに紐づかない単体のメール送信はMailableを使うのが良いのではないでしょうか。

理由としては、以下の通り。

  • イベントに対する通知は媒体がメールではなくなる可能性が十分にあるため、Notificationで抽象化されていれば通知先が変わったときにも楽に変更ができそう
  • メルマガなどのマーケティング用のメールはトランザクションメールよりもこだわった内容を送ることが多そうなので、簡単にカスタマイズできるインターフェースを持ったMailableのほうが都合良さそう

イベントに対する通知は最初からMailbleと組み合わせても良い気もするが、要件や状況によってはオーバーエンジニアリングになるからシンプルに保つためにNotificationで完結させるのはありなんじゃないだろうか。

正直メルマガ的なものはアプリからというより、別でメール配信サービスを使うことが多いイメージなので、アプリケーションの開発をするならNotificationにお世話になることが多いかもしれない。

以上、MailableとNotificationがどちらもメール送れてしまうので、どう使い分けるの?という話でした

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?