Laravel + Mailpit 学習メモ

学習したことをAIで整理

目的

Laravelからメール送信し、Mailpitで受信確認する流れを理解する。

結論

  • Mailpitは開発用のメール受信箱(本番送信しない)。
  • LaravelはSMTPでMailpitへ送信し、ブラウザUIで受信内容を確認できる。
  • SMTP用ポートとUI用ポートは役割が違うため分かれている。

1. MailpitをDockerで構築

docker-compose.yml にMailpitを追加した。

mailpit:
  image: axllent/mailpit:latest
  ports:
    - "1025:1025"
    - "8025:8025"

ポイント

  • 1025: SMTP受信用(Laravelが送信する入口)
  • 8025: Web UI表示用(人間がメールを確認する入口)

2. Laravel側の設定

.env をMailpit向けに設定した。

MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

意味

  • MAIL_HOST=mailpit はDockerネットワーク内のサービス名
  • MAIL_PORT=1025 はSMTP接続先ポート

3. 送信確認ルートを作成

学習用に /mail-test を追加して送信確認した。

Route::get('/mail-test', function () {
    $user = auth()->user();

    Mail::raw('Mailpit送信テストです。', function ($message) use ($user): void {
        $message->to($user->email, $user->name)
            ->subject('Mailpitテスト');
    });

    return 'メールを送信しました。Mailpit UI (http://localhost:8025) を確認してください。';
});

4. 動作確認

  1. http://localhost:8080 でログイン
  2. http://localhost:8080/mail-test を実行
  3. http://localhost:8025 で受信メールを確認

5. ログ確認

docker compose logs --tail=50 mailpit

確認できた内容:

  • SMTPサーバ起動(1025)
  • HTTP UI起動(8025)
  • http://localhost:8025/ でアクセス可能

6. メール送信フロー(今回)

  1. ブラウザで /mail-test にアクセス
  2. Laravelが Mail::raw() を実行
  3. SMTPで mailpit:1025 に送信
  4. Mailpitが受信して保存
  5. localhost:8025 のUIで確認

7. 学んだこと

  • Mailpitは本番送信を伴わない安全な検証環境
  • SMTP入口(1025)とUI入口(8025)は別役割
  • Laravelのメール設定は.envで切り替え可能
  • ログで起動状態・利用状態を確認できる

8. スキルチェック観点との対応

  • ローカル構築: Mailpitコンテナを自作構成で起動
  • 仕組み理解: Laravel → SMTP(Mailpit) → UIの流れを説明可能
  • 設定理解: docker-compose.yml.env を説明可能
  • 利用: /mail-test で送信しUIで確認済み
  • 保守: docker compose logs mailpit を読める

コメント

タイトルとURLをコピーしました