カテゴリ: Laravel 更新日: 2026/09/02

Laravelでメール送信ログを保存・確認する方法を徹底解説!Mail::fakeとログ出力の使い方

Laravelで送信ログを保存・確認する方法(Mail::fake, ログ出力)
Laravelで送信ログを保存・確認する方法(Mail::fake, ログ出力)

先生と生徒の会話形式で理解しよう

生徒

「Laravelでメールを送ったあと、本当に送られたか確認する方法ってありますか?」

先生

「あります。Laravelでは送信ログを残したり、テスト用にメール送信を確認する仕組みがあります。」

生徒

「テストでも使えるんですか?」

先生

「はい。Mail::fakeという機能を使えば、実際に送信せずに確認できます。」

生徒

「ログとして保存する方法も知りたいです!」

先生

「では順番に見ていきましょう。」

1. Laravelのメール送信ログとは?

1. Laravelのメール送信ログとは?
1. Laravelのメール送信ログとは?

Laravelのメール送信ログとは、メールがいつ誰に送られたかを記録する仕組みです。プログラムでは見えない裏側の動きを記録することで、不具合の原因調査や動作確認がしやすくなります。

ログとは「記録」という意味で、システムの動きをあとから確認するために使われます。例えば、郵便の追跡番号のように、送った履歴を確認できるイメージです。

Laravelではメールの送信結果をログとして出力する方法や、テスト専用の仕組みとしてMail::fakeを使う方法があります。

2. ログ出力でメール送信を確認する方法

2. ログ出力でメール送信を確認する方法
2. ログ出力でメール送信を確認する方法

まずは一番シンプルな方法として、ログファイルに記録する方法を紹介します。LaravelではLog機能を使うことで、簡単にログを出力できます。


use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Log;

Mail::raw('テストメールです', function ($message) {
    $message->to('test@example.com')
            ->subject('テスト');
});

Log::info('メールを送信しました');

このコードではメール送信後にログを残しています。ログは通常、storageフォルダの中に保存されます。

ログファイルを開くと、実際に処理が実行された記録を確認できます。

3. ログファイルの保存場所と確認方法

3. ログファイルの保存場所と確認方法
3. ログファイルの保存場所と確認方法

Laravelのログは、以下の場所に保存されます。


storage/logs/laravel.log

このファイルをテキストエディタで開くと、メール送信の記録を見ることができます。

ログには日時や処理内容が記録されているため、「いつ何が起きたか」を後から確認できます。

初心者の方は、まずこのファイルを開いて確認する習慣をつけると、トラブル解決が早くなります。

4. Mail::fakeとは?テスト用の便利機能

4. Mail::fakeとは?テスト用の便利機能
4. Mail::fakeとは?テスト用の便利機能

Mail::fakeは、実際にメールを送信せずに「送信したことにする」機能です。テスト時に本当にメールを送ると迷惑になるため、この仕組みが用意されています。

これは、実際の郵便を出さずに「出したことを確認するメモ」を残すようなものです。


use Illuminate\Support\Facades\Mail;

Mail::fake();

// メール送信処理
Mail::raw('テストメール', function ($message) {
    $message->to('test@example.com')
            ->subject('テスト');
});

この状態では、実際にはメールは送信されませんが、送信処理は記録されています。

5. Mail::fakeで送信確認する方法

5. Mail::fakeで送信確認する方法
5. Mail::fakeで送信確認する方法

Mail::fakeを使うと、「本当に送信処理が呼ばれたか」を確認できます。


use Illuminate\Support\Facades\Mail;

Mail::fake();

Mail::raw('テストメール', function ($message) {
    $message->to('test@example.com')
            ->subject('確認テスト');
});

// 送信されたか確認
Mail::assertSent(function ($mail) {
    return true;
});

assertSentは「送信されたかチェックする」ための命令です。

これにより、メール機能が正しく動いているかを安全に確認できます。

6. 特定の宛先に送信されたか確認する

6. 特定の宛先に送信されたか確認する
6. 特定の宛先に送信されたか確認する

より細かく、「特定の人に送られたか」を確認することもできます。


Mail::assertSent(function ($mail) {
    return $mail->hasTo('test@example.com');
});

このように書くことで、指定したメールアドレスに送信されたかどうかをチェックできます。

ログだけでなく、テストでも正確な確認ができるため、開発の品質が向上します。

7. ログとMail::fakeの使い分け

7. ログとMail::fakeの使い分け
7. ログとMail::fakeの使い分け

ログ出力とMail::fakeは目的が違います。

ログ出力は実際の動作を記録するためのものです。一方、Mail::fakeはテスト時に安全に確認するためのものです。

例えば、本番環境ではログを確認し、開発やテストではMail::fakeを使うという使い分けが一般的です。

この2つを理解することで、メール機能のトラブルを減らすことができます。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

初心者の方がよくつまずくポイントとして、ログを確認していないことがあります。メールが送られない場合でも、ログを見ると原因が分かることが多いです。

また、Mail::fakeを使っていると実際にはメールが送信されないため、「届かない」と勘違いすることもあります。

開発中なのか、本番なのかを意識して使い分けることが重要です。

さらに、ログは自動で増えていくため、定期的に確認する習慣をつけると、システムの状態を把握しやすくなります。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPで日本語の曜日を表示する方法を解説!配列を使った曜日変換の定番コード
New2
Symfony
Symfonyでバリデーションエラーを表示する方法!初心者でもわかるテンプレート活用術
New3
Laravel
Laravelのマイグレーションエラーの原因と解決方法を完全ガイド
New4
Laravel
Laravelのrefreshとfreshの違いを初心者でもわかる解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravel通知機能の決定版!特定のユーザーにのみ通知を送る認可制御を初心者向けに徹底解説
No.3
Java&Spring記事人気No3
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.4
Java&Spring記事人気No4
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.5
Java&Spring記事人気No5
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.6
Java&Spring記事人気No6
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのエラー画面をカスタマイズする方法!errors/xxx.blade.phpの使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Laravel
Laravelメール送信ログの保存と確認方法を完全解説!Mail::fakeとログ出力の使い方