Laravelのローカル開発環境でメール送信をテスト・デバッグする最短の方法について記載します。
以下の2つの方法を記載します。
- ログで確認する方法
- mailhog(コンテナ)で確認する方法
こうすれば、テスト時のメール設定ができて、簡単に設定後の動作確認ができるよ、ということを記載していきます。
テスト・デバッグ時のメール送信確認の設定周りを中心に記載します。
メール送信のLaravelプログラムの書き方については記載していません。
Laravelのローカル開発環境構築
ローカル開発環境構築は以下の記事をご参照ください。本記事ではローカル開発環境構築が済んでいることを前提に記載します。
DockerでLaravel 11のローカル開発環境を構築する。ついでにphpmyadminも入れてみる。
DockerでLaravel 11のローカル開発環境を構築していきます。 DB確認用に、phpmyadminもインストールします。 コンテナは以下のような構成です。本番環境に応用できるように、あえてSailは使いません。 アプリコンテナ P...
メール送信をログで確認する方法
メールの内容をログ出力するように設定変更
.envファイルでメールをログに吐き出すように設定します。
以下のコマンドでプロジェクト直下の「.env」ファイルを開きます
vi .env
以下のとおり、「.env」ファイル内のMAIL_MAILER
にlogを設定します。
MAIL_MAILER=log
メールを送ってログを確認してみる
以下のコマンドでメールを送信可能です。
// コンテナの中に入る docker compose exec app php artisan tinker // メール送信 Mail::raw('test mail',function($message){$message->to('test@example.com')->subject('test');});
以下のようにcatコマンドなどを使ってログを確認します。
cat storage/logs/laravel.log
以下のようにメールのログが確認できれば成功です。
From: Laravel <hello@example.com>
To: test@example.com
Subject: test
MIME-Version: 1.0
Date: Fri, 05 Jul 2024 09:41:54 +0000
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
test mail
メール送信をmailhog(コンテナ)で確認する方法
メールをmailhog(コンテナ)に送信する設定変更
.envファイルでメールをmailhogに吐き出すように設定します。
以下のコマンドでプロジェクト直下の「.env」ファイルを開きます
vi .env
以下のとおり、「.env」ファイル内のMAIL_HOST
にmailhog
を設定します。
ポートは1025を指定します。
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
次にdocker-compose.ymlを編集します。
vi docker-compose.yml
ファイルの中身は以下のように記載します。
services:
mailhog:
image: mailhog/mailhog
ports:
- target: 8025
published: ${MAILHOG_PUBLISHED_PORT:-8025}
protocol: tcp
mode: host
dockerを立ち上げます
// コンテナを立ち上げている場合は一度落とす
docker compose down
// コンテナを立ち上げる
docker compose up
メールを送ってをmailhogで送信内容を確認してみる
以下のコマンドでメールを送信可能です。
// コンテナの中に入る docker compose exec app php artisan tinker // メール送信 Mail::raw('test mail',function($message){$message->to('test@example.com')->subject('test');});
http://127.0.0.1:8025/にアクセスして、以下のようにメール受信を確認できればOKです。
まとめ
以下の2通りでのメールの確認方法を記載しました。
- ログで確認する方法
- mailhog(コンテナ)で確認する方法
これでメール実装の設定準備はできたと思いますー