简述
在大多数此类教程中都会不遗余力的介绍如何使用数据库。今天我们对数据库暂且不表,而是来关注另一个在web应用中很重要的特性:如何推送邮件给用户。
在某个轻量级应用中我们可能会添加一个如下的邮件服务功能:当用户有了新的粉丝后,我们发送一封邮件通知用户。有很多方法可以实现这个特性,而我们希望提供出一种可复用的通用框架来处理。
Flask-Mail介绍
对于我们来说是幸运的,现在已经有很多外部插件来处理邮件,虽说不能百分百按照我们的想法去处理,但已经相当接近了。
在虚拟环境中安装 Flask-Mail是相当简单的。Windows以外的用户可以利用以下命令来安装:
flask/bin/pip install flask-mail
Windows用户的安装稍有不同,因为Flask-Mail所使用的一些模块不能再Windows系统上运行,你可以使用以下命令:
flask/Scripts/pip install --no-deps lamson chardet flask-mail
配置:
回想一下前文中单元测试部分的案例,我们通过添加配置支持了一个这样的功能:当应用的某个版本测试出错时可以邮件通知我们。从这个例子就可以看出如何配置使用邮件支持。
再次提醒大家,我们需要设置两个方面的内容:
邮件服务器信息 用户邮箱地址如下正是前文中所用到的配置
# email serverMAIL_SERVER = 'your.mailserver.com'MAIL_PORT = 25MAIL_USE_TLS = FalseMAIL_USE_SSL = FalseMAIL_USERNAME = 'you'MAIL_PASSWORD = 'your-password' # administrator listADMINS = ['you@example.com']
其中并没有设置切实可用的邮件服务器和邮箱。现在我们通过一个例子来看如何使用gmail邮箱账户来发送邮件:
# email serverMAIL_SERVER = 'smtp.googlemail.com'MAIL_PORT = 465MAIL_USE_TLS = FalseMAIL_USE_SSL = TrueMAIL_USERNAME = 'your-gmail-username'MAIL_PASSWORD = 'your-gmail-password' # administrator listADMINS = ['your-gmail-username@gmail.com']
另外我们也可以初始化一个Mail对象来连接SMTP邮件服务器,发送邮件:
from flask.ext.mail import Mailmail = Mail(app)
发个邮件试试!
为了了解flask-mail如何工作的,我们可以从命令行发一封邮件看看。进入python shell并执行如下的脚本:
>>> from flask.ext.mail import Message>>> from app import mail>>> from config import ADMINS>>> msg = Message('test subject', sender = ADMINS[0], recipients = ADMINS)>>> msg.body = 'text body'>>> msg.html = '<b>HTML</b> body'>>> mail.send(msg)
新闻热点
疑难解答