スクリプトやアプリなどからメールを送信することは現在でも多いと思います。
そうしたときにテスト用のメールサーバーを用意するのは非常に面倒です。
しかし、実際の業務に利用されているメールサーバーしか利用できないということもあるでしょう。
そうしたときには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.comTo: 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デコードを行って確認してください。
0コメント