くりゅぴ!

サーバーやWEB問題解決のメモから生活お得情報まで。未分類のものは執筆中

dockerコンテナでPHPメール送信テストをする

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で暗号化してたりすると正しい結果は得られないかもしれない。

マルチバイトにはやはり厳しいか。

参考
https://qiita.com/kinoleaf/items/0b0002aa03993e58e2f0

サーバー開発

タグ:

サーバー開発の最新記事

2020年8月24日
さくらサーバー移管後DNSゾーンは変更できない
2020年7月13日
NginxにSERVER_NAMEがない
2020年6月18日
NginxにREDIRECT_URLを追加する

コメントを残す

メールアドレスが公開されることはありません。