包装了smtplib的Flask-Mail扩展能更好地和Flask集成。
使用Flask-Mail提供电子邮件支持
Flask-Mail会连接上SMTP服务器,并把邮件交给这个服务器发送。如果不进行配置,Flask-Mail会连接localhost的端口25,无需验证即可发送电子邮件。下表列出了可用来设置SMTP服务器的配置。
连接外部服务器的过程如下:
import os
#.....
app.config['MAIL_SERVER'] = 'smtp.googlemail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USER_TLS'] = True
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
Flask-Mail的初始化:
from flask.ext.mail import Mail
mail = Mail(app)
保存电子邮件副武器的用户名和密码的两个环境变量要在环境中定义。声明环境变量的方法,请自行百度。
在Python shell中发生电子邮件
主要用来检查配置是否正确。
在程序中集成发送电子邮件功能
把发送电子邮件的通用部分抽象出来,定义成一个函数:
#hello.py:电子邮件支持
from flask.ext.mail import Message
app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
app.config['FLASKY_MAIL_SENDER'] = 'Flasky Admin <flasky@example.com>'
def send_email(to, subject, template, **kwargs):
msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + subject,
sender = app.config['FLASKY_MAIL_SENDER'], recipients=[to])
msg.body = render_template(template + '.txt', **kwargs)
msg.html = render_template(template + '.html', **kwargs)
mail.send(msg)