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

Laravelメール送信ログの保存と確認方法を完全解説!Mail::fakeとログ出力の使い方

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

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

生徒

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

先生

「はい、あります。Laravelではログを使って記録したり、テスト用に送信を記録する方法も用意されています。」

生徒

「テスト用に送信を記録するってどういうことですか?」

先生

「実際にメールを送らずに、送信されたかどうかだけを確認できる仕組みです。それでは順番に見ていきましょう。」

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

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

Laravelのメール送信ログとは、アプリケーションがメールを送信した記録を保存する仕組みのことです。メールが正常に送信されたか、エラーが発生していないかを確認するためにとても重要です。

初心者の方は「ログ」という言葉に戸惑うかもしれませんが、これは「動作の記録帳」のようなものです。例えば、日記のようにいつ何が起きたかを書き残しておくイメージです。

Laravelでは、このログは通常storage/logs/laravel.logというファイルに保存されます。

2. ログファイルの確認方法

2. ログファイルの確認方法
2. ログファイルの確認方法

まずは実際にログを確認してみましょう。Laravelではログは自動で保存されます。

以下のファイルを開くことで確認できます。


storage/logs/laravel.log

このファイルには、エラーや情報が時系列で記録されています。メール送信時に問題があれば、ここにエラーが表示されます。

3. メール送信時にログを出力する方法

3. メール送信時にログを出力する方法
3. メール送信時にログを出力する方法

メール送信時に自分でログを記録することもできます。これは「ここでメールを送った」という目印を残すようなものです。


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

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

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

このように書くことで、メール送信後にログへ記録されます。Log::infoは「情報レベルのログ」を意味します。

4. Mail::fakeとは何か

4. Mail::fakeとは何か
4. Mail::fakeとは何か

Mail::fakeは、メールを実際に送信せずに「送信されたことだけを記録する」ための機能です。

これは主にテストで使われます。例えば、開発中に何度もメールを送ると困る場合に便利です。

イメージとしては、郵便を実際に出さずに「出したことだけメモする」ようなものです。

5. Mail::fakeの基本的な使い方

5. Mail::fakeの基本的な使い方
5. Mail::fakeの基本的な使い方

実際のコードを見てみましょう。


use Illuminate\Support\Facades\Mail;

Mail::fake();

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

この状態ではメールは送信されません。代わりにLaravel内部で記録されます。

6. メールが送信されたか確認する方法

6. メールが送信されたか確認する方法
6. メールが送信されたか確認する方法

Mail::fakeを使うと、送信されたかどうかを確認できます。


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、本番環境ではログ確認という使い方が一般的です。

8. エラー発生時のログ確認ポイント

8. エラー発生時のログ確認ポイント
8. エラー発生時のログ確認ポイント

メールが送信できない場合は、ログを確認することが重要です。

特に以下の点をチェックしましょう。

  • メール設定が正しいか
  • 接続エラーが出ていないか
  • 認証エラーがないか

ログにはエラーの原因が詳しく書かれているため、問題解決のヒントになります。

9. ログレベルの違いを理解する

9. ログレベルの違いを理解する
9. ログレベルの違いを理解する

Laravelのログにはレベルがあります。これは重要度の違いを表します。


Log::debug('デバッグ情報');
Log::info('通常の情報');
Log::warning('注意が必要');
Log::error('エラー発生');

初心者の方はまずinfoとerrorを使い分けるだけでも十分です。

これにより、どのログが重要か見分けやすくなります。

関連記事:
カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyとは?PHPの堅牢なフレームワークの特徴と活用シーン
New2
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
New3
Laravel
Laravelのモック化を完全解説!MockeryとFacadesでテストを簡単にする方法
New4
CodeIgniter
CodeIgniterバリデーションのよくある失敗例と対策!初心者向けエラーチェック完全ガイド
人気記事
No.1
Java&Spring記事人気No1
Symfony
Symfonyの抽象コントローラとは?AbstractControllerを初心者向けにやさしく解説
No.2
Java&Spring記事人気No2
PHP
PHPで定数を定義する方法!defineとconstの違いと使い分けを徹底比較
No.3
Java&Spring記事人気No3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
No.4
Java&Spring記事人気No4
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.5
Java&Spring記事人気No5
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.6
Java&Spring記事人気No6
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.7
Java&Spring記事人気No7
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.8
Java&Spring記事人気No8
Symfony
Symfonyでルーティングとコントローラを連携する方法をやさしく解説!初心者でもわかるURLと処理のつなげ方