はじめに
今回は、開発用のメールサーバーであるMailpitを試してみます。
メール送信を行うアプリケーションを開発する際に、非常に便利です。
Laravel Sailに初めから組み込まれているため、構築作業を行う必要がありません。
Laravel Sailでの開発環境の構築方法は以下をご覧ください。
上記の手順まで済んでLaravelにアクセスすると、初期画面が表示されます。

ちなみに以前のSailのバージョンでは、MailHogが採用されていました。
最新のLaravelではMailpitに置き換わっています。
Mailpitとは
Mailpitは、開発用のメールサーバーです。
Mailpitに送信されたメールは、ブラウザから確認することができます。
オープンソースであり、MITライセンスで公開されています。
類似のサービスとしては、Mailtrapがあります。
こちらはクラウドベースであり、無料でも利用することができます。
メールはブラウザで確認することができます。

それほど大量のメール送信を行わなければ、無料枠でも足りると思います。

LaravelでMailTrapを利用する方法につきましては、以下の記事を参考にしてください。
開発用のメールサーバーの利点
メリット1
メール送信のプログラムを作成し、動作確認しようとすると、例えば以下のようなやり方があります。
その場合、誤って本番のメールアカウントにメールが送信されてしまったら、大事でしょう。
また、メール送信プログラムに不具合があって、大量に誤送信してしまったなど、影響が大きく、信頼を損なったり、迷惑をかけてしまうことになります。
Mailpitは、送信先のメールアドレスにメールは送信せず、送ったメールはWebブラウザ上で確認することができます。
メリット2
複数のメールアカウントにメール送信のテスト行いたい場合、実在するメールアカウントを用意するのは面倒でしょう。
Mailpitを使用すると、実際に存在しないメールアカウントでも問題ありません。
送ったメールは、直ぐにブラウザ上から確認できます。
メリット3
Laravel Sailでは最初から組み込まれていますので、構築や設定の必要はありません。
また、本番サーバーでは、SMTP先を変更するだけですので、運用的にも楽です。
Mailpitを使ってみる
管理画面にアクセス
前述の通り、Laravel Sailには最初から組み込まれています。
Sailを起動して、以下のURLにアクセスしましょう。
http://localhost:8025/
Mailpitの管理画面が表示されました。
初めから使用できるようになっております。

Laravelの設定(.env)を確認しましょう。
SMTPサーバーに、Mailpitが指定されています。
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
以下の項目は任意で設定しましょう。
MAIL_FROM_ADDRESS="hello@example.com"
メールを送信してみる
メール送信を試してみましょう。
以前記事にまとめました、Laravelの認証機能の導入 (Breeze)を参考に、プロジェクトを用意しました。
アカウント登録画面を開き、アカウントを登録しました。
存在しないメールアドレスでも問題ありません。
http://localhost/register

メール送信を試すために、「Forgot your password?」をクリックします。

先程アカウント登録したメールアドレスを指定します。

パスワードのリセットリンクが、メール送信されました。

Mailpitを確認しましょう。一通メールが届いています。

受信ボックスを確認しますと、メールの本文が確認できます。

メールの保存について
メールの保存は、デフォルトでメモリになっておりますので、Sailを再起動した段階で消えてしまいます。
テスト用のメールの確認ですので、困ることはないと思いますが、一応永続化することもできるようです。
Laravelのメール送信をログに出力
参考までに開発用のメールサーバーを使用せず、メールの内容をログに出力し確認する方法を紹介します。
.envファイルを開き、以下の項目を変更します。
MAIL_MAILER=log
先程と同じく、メール送信を試してみましょう。
Laravelのログファイルを確認します。
storage\logs\laravel.log
やや分かりにくいかも知れませんが、ログファイルに、メールアドレスやメール本文などが出力されます。
ちょっとした確認や試すのは、ログファイルに出力するのも良いと思います。

その他
初学者へ
Laravelを初めて触る方へ向け、手順やアドバイスをまとめました。
外部サーバーへ公開
作成したアプリは公開して使ってもらいましょう!
Laravelアプリケーションを外部公開する方法をまとめました。
脆弱性対策
脆弱性を抱えたアプリケーションの場合、攻撃を受ける可能性があり大変危険です。
作成したアプリケーションは、脆弱性対策も意識しましょう。
GitHubと連携
GitHubと連携する方法を解説しました。
プロジェクトの管理はGitHubを活用しましょう。
GitHub Copilot
GitHub Copilotを導入し、AIにコーディングをサポートしてもらうこともできます。
さいごに
メール送信を行うアプリケーションを開発する場合は、Mailpitは便利です。
是非活用しましょう。
他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。
コメント