すげー簡単だった。その割に、メール送受信は鬼門なのでこれはとてもうれしい。
以前、MailHogって使ったけど、今はMailpitの方が開発が盛んらしい。
Docker compose に追加
compose.yaml の servicesに追加。ポートの1025はsmtpで、8025はWEBからメールのチェック。
services:
mailpit:
container_name: foobar_mailpit
image: axllent/mailpit
ports:
- "1025:1025"
- "8025:8025"
起動する
compose.yamlのあるところに移動して、以下のコマンドを打つ。
docker compose up mailpit
-d付けてバックグラウンドにしてもよいけど、初回はこれで。
Laravelから確認
.env に設定値
Dockerネットワークでは、service名でネットワークアクセスできるのでこんな感じ。
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}"
artisan tinkerで送信
$ docker exec -ti foobar_laravel bash
でlaravelのbashに入り
# ./artisan tinker
でtinkerを起動し、
Mail::raw('これはテストメールです', function ($message) { $message->to('test@example.com')->subject('テスト件名'); });
って感じ。 ### メールが送信されたかをチェック ブラウザからメールボックスのWEB UIにアクセスする。 http://localhost:8025 いやー、なんて簡単なんだ…