tohokuaikiのチラシの裏

技術的ネタとか。

DockerでLaravelからのメールを送受信確認するMailpit

すげー簡単だった。その割に、メール送受信は鬼門なのでこれはとてもうれしい。
以前、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

いやー、なんて簡単なんだ…