docker環境でメールどうしよう問題
- 直接送りゃいいんじゃね?
- いやいや、事故るっしょ。1万通とかメール送信してしもたら・・・
- そのためだけにsendgridとかmailgunとか
- おおげさ
- postfixのコンテナあげる?
- 環境つくるだけで一苦労しそう(docker-hubにあるけど)
ということでいろいろ探してたらMailHogというものを発見しました
- メリット
- 事故らない
- いくらメール投げてもローカルにしかとどまらないので
- 設定が簡単
- WEB UIでメール確認ができる
- デメリット
- 日本語メールは文字化けすることがある、UTF-8でおねがいしたい
- なぜかdockerコンテナが死ぬことがある、まあコンテナのリスタートしてください
Howto
1. docker-compose.ymlにはこれだけ追加するだけ
docker-compose.yml
mailhog:
image: mailhog/mailhog
ports:
- "8025:8025"
2. mhsendmailを入れてください
- https://github.com/mailhog/mhsendmail
- goで出来ています
- yumとかaptでsendmailいちいち入れるの面倒なので、こいつをマウントしてやれば良い
- 例えばこんな感じ
docker-compose.yml
volumes:
- "./bin/mhsendmail:/usr/local/bin/mhsendmail"
3. phpの人向け
- webサーバのコンテナのphp.iniに追加(変更)しておくと、phpの標準mail関数でメール送信できますんで既存コードをいじらなくて済む
php.ini
sendmail_path = "/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025"
以上です、快適なdockerライフを!!