mailhogを利用すると簡単にPHPでメールの送信ができたか確認ができる。
実際にSMTPでメール送信は行わないが、送信した結果がブラウザで確認ができる。
docker-composeファイルに以下を記述する。
もちろん別途でPHP用のコンテナを設定する必要もある。
mailhog:
image: mailhog/mailhog
ports:
- "8025:8025"
- "1025:1025"
ただインストールしただけでは機能は動かない。
PHPのDockerfileに以下を記述してmailsend時に実行するプログラムを導入して設定をする
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
これをPHPのdockerに追記して再度buildを行い立ち上げ、phpinfoでデータを確認すると、sendmail_pathの部分が変わっているはず。
つまりsendmailの関数を実行するとその指定されたファイルが実行されるということになる。
あとはlocalhost:8025で確認すればメールの受信状態を確認できるはずだ。
ただ、自分が行った際、Fromやto、subjectと行った部分がプログラムが出力されてしまったので、マルチバイト文字をbase64で暗号化してたりすると正しい結果は得られないかもしれない。
マルチバイトにはやはり厳しいか。
コメント