Docker内でメール送信したいときなど。
通常であればWebコンテナ用にphp-7.4などのapache(or nginx)だけの最小構成になっていることがほとんどだと思いますので、メール送信ができないかと思います。
かといってCentOSなどを入れるのはDockerの用途に適していないため、Dockerでメール送信ができるコンテナについて色々と探したところ、mailHogというツールが有用なようです。
特徴としては
- 実際にはメールを送らず、ローカル内の閉じた環境で確認ができる
- 送信したメールをGUIツールでブラウザから確認できる(Mailtrapに似ている。)
のような感じです。
構成
Dockerfile
PHPのコンテナの中に以下の2行を追加すればOKです。
1 2 3 4 5 |
RUN echo 'sendmail_path = "/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025"' > /usr/local/etc/php/conf.d/mhsendmail.ini 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 |
docker-compose.yml
1 2 3 4 5 6 7 8 9 |
mailhog: container_name: phptips_mailhog image: mailhog/mailhog ports: - "8025:8025" volumes: - "./mail/mhsendmail:/usr/local/bin/mhsendmail" networks: - phptips |
あとはPHPコンテナの中に入って
mb_send_mail〜 など普通のメール送信のプログラムを実行すればOKです。
サンプルコード
参考URL