<Python, flask> Flask-mail

Flask-mailしてみた。

https://pythonhosted.org/flask-mail/

まずは、SMTPサーバオン。

>winpty python -m smtpd -n -c DebuggingServer localhost:1025

続いて、別ターミナルで、ipyhtonオン。

で、

In [1]: from flask import Flask

In [2]: from flask.ext.mail import Mail

In [3]: app = Flask(__name__)

In [4]: app.config['MAIL_PORT'] = 1025

In [5]: mail = Mail(app)

In [6]: from flask.ext.mail import Message

In [7]: msg = Message('Title', sender='sender@example.com', recipients=['receiver@example.com'])

In [8]: msg.body = 'Hello, Hage!'

おし、設定完了。
で、送ってみるべし。

In [9]: mail.send(msg)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-10-1f7359cbdd32> in <module>()
----> 1 mail.send(msg)

:
:

RuntimeError: working outside of application context

ゲロ。
application contextの外じゃねーか、、、と怒られる。

なら、
で、ルーティングして、
ラン。

In [11]: @app.route('/')
    ...: def index():
    ...:     mail.send(msg)
    ...:     

In [12]: app.run()

で、http://127:0.0.1:5000を見に行くと、
python smtpサーバ側にメッセージが出た。

---------- MESSAGE FOLLOWS ----------
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Title
From: sender@example.com
To: receiver@example.com
Date: Mon, 25 Apr 2016 14:29:35 +0900
Message-ID: <146156211707.19452.474249551535539549@hage.hage.com>
X-Peer: 127.0.0.1

Hello, Hage!
------------ END MESSAGE ------------

いけるねー。

参考。

mayo.hatenablog.com