flask中使用Flask-Mail提供对电子邮件的支持,下面将分步骤测试flask中发送电子邮件的功能:
1 配置SMTP服务器的信息
我们需要借助flask程序实例app的config属性来配置电子邮件的SMTP服务器信息,其中主要的配置选项包括服务器的地址MAIL_SERVER\端口号MAIL_PORT\用户名MAIL_USERNAME\密码MAIL_PASSWORD.下面以QQ邮箱为例发送电子邮件.
import os
#...
app.config['MAIL_SERVER']='smtp.qq.com'
app.config['MAIL_PORT']=587
app.config['MAIL_USE_TLS']=True
app.config['MAIL_USERNAME']=os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD']=os.environ.get('MAIL_PASSWORD')
这里我们将用户名和密码保存在名为MAIL_USERNAME和MAIL_PASSWORD的环境变量中,然后设置相应的环境变量即可.注意app.config['MAIL_USE_TLS']=True这句代码,因为我们用的端口是587,为TLS(传输层安全协议)的安全端口,所以设置传输层安全协议生效.
2 创建电子邮件Mail实例
from flask_mail import Mail
mail=Mail(app)
3 配置所需要的环境变量
export MAIL_USERNAME=XXX@qq.com
export MAIL_PASSWORD=XXXXX
4 在python shell中发送电子邮件
from flask.ext.mail import Message
from test import mail
msg=Message('My Subject',sender='879651072@qq.com',recipients=['879651072@qq.com'])
msg.body='text body'
msg.html='<b>HTML</b> body'
with app.app_context():
mail.send(msg)
效果如图:
Github位置:
https://github.com/HymanLiuTS/flaskTs
git clone git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL24