[tips]Pythonを使ってダミーのSMTPサーバーを起動する

スクリプトやアプリなどからメールを送信することは現在でも多いと思います。

そうしたときにテスト用のメールサーバーを用意するのは非常に面倒です。

しかし、実際の業務に利用されているメールサーバーしか利用できないということもあるでしょう。

そうしたときにはPythonを利用することでパソコン内でSMTPサーバーを使い捨てで起動することができます。


python -m smtpd -n -c DebuggingServer localhost:xxxx

pythonを起動するときに、「-m」オプションをつけることで指定したモジュールやパッケージをメインとして実行します。そして「-c」でコマンドを指定しています。

ここではコマンドとしてDebuggingServerオブジェクトを「localhost」で「xxxx」で指定したポート番号を利用して呼び出しています。

さらに、「-n」オプションは実はpythonの起動時オプションではありません

これはsmtpdの方のオプションで、「nobody」ユーザーとして実行します。

つけない場合は起動に失敗します。


うまく起動できても何も表示はされません。

このメールサーバー宛にメールを送信すると、以下のサンプルのような出力がされます。


---------- MESSAGE FOLLOWS ----------
hello, nalulabo
------------ END MESSAGE ------------

こちらはPowerShellからメール送信したときのサンプルです。

文字コードをUTF-8に設定しています。

---------- MESSAGE FOLLOWS ----------
MIME-Version: 1.0
From: nalu.labo@gmail.com

To: nalu.labo+test@gmail.com

Date: 3 Feb 2016 12:12:09 +0900

Subject: =?utf-8?B?5YyW44GR44KL77yf?=

Content-Type: text/plain; charset=utf-8

Content-Transfer-Encoding: base64

X-Peer: 127.0.0.1

5pel5pys6Kqe

------------ END MESSAGE ------------

注意事項

このメールサーバーでは届いたそのままが出力されます。

よって、文字化けしていないかはbase64デコードを行って確認してください。

もんが(なるーらぼ)

個人でプログラミングの学習サイト「なるーらぼ」を運営しています。
https://nalu-labo.amebaownd.com
PowerShell入門の電子書籍2冊も出版しています。
http://www.amazon.co.jp/dp/B017LJOCJ2

なるーらぼ

ごく自然にプログラミングを楽しむことができる世界をつくるお手伝いをしています

0コメント

  • 1000 / 1000