MailHogを利用してメール送信テスト環境をdockerコンテナ上に作る
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
その他
デフォルトではメールはメモリ上に保存されるので、
コンテナの再起動などを行うと受信したメールは消えます。
参考記事
Author And Source
この問題について(MailHogを利用してメール送信テスト環境をdockerコンテナ上に作る), 我々は、より多くの情報をここで見つけました https://qiita.com/kobatei/items/1b8b0ca5e8737235dccd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .