実務であまり使うことはなかったが、最近Laravelの勉強をする中で触れることがあったライブラリが「MailCatcher」。
MailCatcherは簡易のメールサーバーライブラリで、実際にメールを送信することはできないが、送信したメールをライブラリ内に保存し、ブラウザ上の管理画面から送信した内容を確認することができる。
今回は、このMailCatcherをDockerで動かす方法を紹介する。
docker-compose.ymlにMailCatcherを追加
docker-compose.ymlを使った方法を説明する。
ファイル内に以下の設定内容を追記する。
version: '3'
services:
# MailCatcher用のコンテナ
mailcatcher:
image: schickling/mailcatcher
ports:
- 1080:1080
使用するDockerイメージと、ポートの指定のみと、シンプルな記述でOK。
ファイルを保存したらdocker-compose up -d
でコンテナを起動。
ブラウザから管理画面にアクセスする際はlocalhost:1080
とURL欄に入力すれば以下のような画面が表示されるはずだ。
WebアプリからMailCatcherを利用してメールを送信する
LaravelなどのWebアプリケーションから、送信サーバーとしてMailCatcherを利用する場合は、以下のように設定ファイルを編集する。
※Laravelの.envファイルの例
MAIL_DRIVER=smtp
MAIL_HOST=mailcatcher
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=mailcatcher@example.com
MAIL_FROM_NAME="${APP_NAME}"
Dockerコンテナの場合、ホスト名には対象のコンテナ名を指定し、ポートはMailCatcherでは1025を使用する。
ユーザー名、パスワードはnullでOK。
設定を保存し、Webアプリからメールを送信すると、送信メールがMailCatcherの管理画面上に表示されるようになる。