MailHogについて
簡易SMTPサーバーの1種で開発時のメールテストに活用できます。
Docker Hubでコンテナ公開もされているため
導入も非常に簡単です。
GitHub
Docker Hub
今回はあくまで既存dockerプロジェクトにSMTPサーバを追加する形でいきます
docker run
にて挙動確認をしたい方は配布元のドキュメントを確認してください
導入方法
docker-compose.yml
へコンテナを追記
mailhog:
image: mailhog/mailhog
ports:
- "8025:8025"
ports
に設定している8025
はMailHogのデフォルトHTTPポートです。
もしホスト端末からコンテナ上のMailHogへSMTPテストを行う場合は
ports
へ - " 1025:1025"
を追記してください
service | default port |
---|---|
HTTP server | 8025 |
SMTP server | 1025 |
build後、http://localhost:8025
へアクセスするとこんな画面が表示される
あとはMailHogコンテナに対しメールを送信すればこちらの画面で確認できるらしい
##メールテスト
同確のためSMTP通信が正常に通るか簡単なプログラムでチェックします
import smtplib
from email.mime.text import MIMEText
def test_mail(fromaddr, toaddr, subject, msg):
m = MIMEText(msg)
m['Subject'] = subject
m['From'] = fromaddr
m['To'] = toaddr
s = smtplib.SMTP(host="mailhog", port=1025)
s.sendmail(fromaddr, toaddr, m.as_string())
s.close()
return "done"
##Jimでfailure_test
Jimによる異常系のテストもできるようです。
利用するにはdocker-compose.yml
のmailhog
部で以下を追記します
command: -invite-jim -jim-accept=0.5
上記の場合50%の確率でメール送信が成功します。(他にも通信速度等も設定可能)
マニュアル上はMailHog 〜
にてオプション設定と書いてありますがDocker上でそれを書くと動作しません
各種オプションは以下から確認してください
Introduction to Jim
##その他
デフォルトではメールはメモリ上に保存されるので、
コンテナの再起動などを行うと受信したメールは消えます。
##参考記事