Copy & Paste Engineer

【Docker】MailHog を利用してメールテスト環境を作る

MailHog を利用してメールテスト環境を作る

メールの送信テストを行う際にメールアドレスなどの用意が面倒だったため、MailHog を利用してメールテスト環境を作りました。

MailHog

MailHog

Docker に MailHog 導入

docker-compose.yml に以下を追加

  mailhog:
    container_name: mailhog
    image: mailhog/mailhog:latest
    ports:
      - "8025:8025"
      - "1025:1025"

PHP Dockerfile

PHP を利用してメール送信をするため PHP の Dockerfile に以下を追加

# mailhog対応
RUN curl -sSLO https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
    && chmod +x mhsendmail_linux_amd64 \
    && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail
    && echo 'sendmail_path = "/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025"' > /usr/local/etc/php/conf.d/sendmail.ini

--smtp-addr=mailhog:1025 の箇所は --smtp-addr=サービス名:SMTPポート番号 になります。

メール送信

実際にメールを送信してみます。

php -r "mail('test@example.com', 'テストタイトル', 'テスト本文', 'From: from@example.com');";

メール確認

MailHog の確認画面で送信の確認が出来ます。 http://localhost:8025/

一覧画面でメールが届いている事を確認 mailhog-list.png

詳細画面で本文を確認 mailhog-detail.png

これでメールのテストが出来ます。