[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

なるーらぼ

忙しい非プログラマに贈るプログラミング学習サイトです。 3分動画を使ったPowerShellや要件定義の入門講座、パソコン活用のtipsを公開しています

0コメント

  • 1000 / 1000