53
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MailHogを利用してメール送信テスト環境をdockerコンテナ上に作る

Last updated at Posted at 2017-10-13

MailHogについて

簡易SMTPサーバーの1種で開発時のメールテストに活用できます。
Docker Hubでコンテナ公開もされているため
導入も非常に簡単です。
GitHub
Docker Hub

今回はあくまで既存dockerプロジェクトにSMTPサーバを追加する形でいきます
docker runにて挙動確認をしたい方は配布元のドキュメントを確認してください

導入方法

docker-compose.ymlへコンテナを追記

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へアクセスするとこんな画面が表示される
2d0659dc-aa77-7b14-9804-8d3380759a49.png

あとはMailHogコンテナに対しメールを送信すればこちらの画面で確認できるらしい

##メールテスト
同確のためSMTP通信が正常に通るか簡単なプログラムでチェックします

smtp_sample.py
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"

受信メールが一覧で表示されます
22c03870-9b77-0ff5-5499-db36277354d4.png

ソースやヘッダー情報等もブラウザ上から確認できます。
f5455a56-3179-3e58-989a-2ff6852e4bb2.png

##Jimでfailure_test
Jimによる異常系のテストもできるようです。
利用するにはdocker-compose.ymlmailhog部で以下を追記します

command: -invite-jim -jim-accept=0.5

上記の場合50%の確率でメール送信が成功します。(他にも通信速度等も設定可能)
マニュアル上はMailHog 〜にてオプション設定と書いてありますがDocker上でそれを書くと動作しません

各種オプションは以下から確認してください
Introduction to Jim

また設定値はブラウザからも確認可能
18dcb8e8-c234-6df8-ad0c-71387607ca45.png

##その他
デフォルトではメールはメモリ上に保存されるので、
コンテナの再起動などを行うと受信したメールは消えます。


##参考記事

Qiita: MailHogでメール送受信のテストをする

53
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?