学習したことを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. 動作確認
http://localhost:8080でログインhttp://localhost:8080/mail-testを実行http://localhost:8025で受信メールを確認
5. ログ確認
docker compose logs --tail=50 mailpit
確認できた内容:
- SMTPサーバ起動(1025)
- HTTP UI起動(8025)
http://localhost:8025/でアクセス可能
6. メール送信フロー(今回)
- ブラウザで
/mail-testにアクセス - Laravelが
Mail::raw()を実行 - SMTPで
mailpit:1025に送信 - Mailpitが受信して保存
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を読める

コメント