PyMailHog メール送信テスト用サーバー

メールの送信テストにMailHogを使おうと思ったのですが、
https://github.com/mailhog/MailHog
utf-8なら問題ないのですが、iso-2022-jpのメールがどうやっても文字化けしてしまいます。

解決できそうになかったので、Pythonで同様のサイトを実装してみました。
PyMailHog
https://bitbucket.org/symfo/pymailhog/src/master/


起動



特に依存関係はないので、Python3が動作する環境ならどこでも動作するはずです。
プログラムはzipappで1ファイルにまとめてあります。
Python3 zip圧縮した1ファイルでアプリケーションを配布する(zipapp)

こちらからファイルをダウンロード
https://bitbucket.org/symfo/pymailhog/downloads/


$ python3 PyMailHog



また、実行権限を付与して単体での起動も可能です。


$ chmod +x PyMailHog
$ ./PyMailHog



smtpの待受ポート番号は1025固定です。



送信サンプル



PyMailHogを起動後、smtp接続してメールを送信します。
サンプルは以下の通り。


  1. import base64
  2. import smtplib
  3. import ssl
  4. from email.mime.text import MIMEText
  5. from email.utils import formatdate
  6. import time
  7. main_text = "本文の確認テスト"
  8. msg = MIMEText(main_text, "plain", 'utf-8')
  9. msg["Subject"] = "件名のテスト"
  10. msg["From"] = "from@example.com"
  11. msg["To"] = "to@example.com"
  12. msg["Cc"] = ""
  13. msg["Bcc"] = ""
  14. msg["Date"] = formatdate(None,True)
  15. msg["Message-ID"] = str(time.time())
  16. smtpclient = smtplib.SMTP('localhost', 1025)
  17. smtpclient.send_message(msg)
  18. smtpclient.quit()





Web GUI



テスト送信したメールはWeb GUIで確認できます。

http://localhost:8025

a06_01.png

a06_02.png



内蔵smtp, webサーバー



smtp、webサーバーは各々Pythonにビルドインされているものを使用しています。

Python デバッグ用のSMTPサーバーを起動する
Python webサーバー、フレームワークを使用せずにwebアプリ作成

webサーバーをノンブロッキングで起動させる方法はこちらに助けられました。
Python: 組み込みのソケットサーバをマルチスレッド化する


関連記事

コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ