1
1

More than 1 year has passed since last update.

Dockerにて構築されたPHP(Laravel)環境で、MailHogを使ってメール送信処理をテストする

Posted at

概要

ローカル環境でメール送信処理をテストする際。
実際にメール送信されないようにしつつ、挙動をテストするため、MailHogを利用しました。
設定方法などメモします。

環境

  • PHP8.1系
  • Laravel9系
  • ローカル環境はDockerにて構築

設定方法

MailHogを導入

docker-compose.ymlにMailHogの記述を追加します。(ここで立ち上がるコンテナが、ローカル用のSMTPサーバーとなります)
DockerHubに公開されているイメージをそのまま利用できます。

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

1025はSMTPポート用、8025はHTTPポート用(ブラウザからMailHog管理画面にアクセスする用)として設定しています。

(PHP用設定)mhsendmailを導入

PHPのメール送信処理は、デフォルトでは内部でsendmailを用いています。参考
MailHogを利用する場合は、メール送信コマンドをmhsendmailに変更する必要があります。

mhsendmailをインストール。

RUN curl -sSL https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 -o mhsendmail && \
  chmod +x mhsendmail && \
  mv mhsendmail /usr/local/bin/mhsendmail

php.iniに以下の設定を追加。

sendmail_path = "/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025"

(Laravel)環境変数設定

メール関連の環境変数を以下のように設定します。

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_FROM_ADDRESS="送信元アドレス"

動作確認

http://localhost:8025にアクセスすることで、画面上からメール送受信を確認することができます。

mail(
    'test1@example.com',
    'test',
    'test',
    'From: test2@example.com'
);

スクリーンショット 2023-01-02 21.13.27.png

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1