您的位置:首页 > 其它

6.1为我们的web程序添加发送邮件的功能

2018-03-05 15:48 344 查看
——————————————————————前言————————————————————————————
为了和用户进行沟通, 我们在web程序中添加发送邮件的功能。
————————————————————————————————————————————————————

一. 安装flask-mail扩展

&pip install flask-mail

二. 修改hello.py文件

from flask-mail import Mail

#设置config字典

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')  #邮件用户密码

app.config['FLASKY_MAIL_SENDER'] = '1660705191@qq.com'  #发件人, 可与邮件用户名相同

app.config[FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'  #邮件主题前缀

app.config['FLASKY_ADMIN'] = os.environ.get('FLASKY_ADMIN')  #程序管理员邮箱地址

mail = MAIL(app)  #初始化扩展

#发送邮件函数

def send_mail(to, subject, template, **kwargs):

msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX']+subject, sender=os.config['FLASKY_MAIL_SENDER'], recipients=[to])  #创建邮件

msg.body = render_template(template+'.txt', **kwargs)

msg.html = render_template(template+'.html, **kwargs')  #定义邮件内容 模板内容见文末

mail.send(msg)  #发送邮件

#视图函数

@app.route('/', methods=['GET', 'POST'])

def index():

form = NameForm()

if form.validate_on_submit():

user = User.query.filter_by(username=form.name.data).first()

if not user:  #如果数据库中无此用户

user = User(username=form.name.data)

db.session.add(user)

session['known'] = False

if app.config['FLASKY_ADMIN']:  #如果存在管理员邮箱地址

send_mail(app.config['FLASKY_ADMIN'], 'New User', 'mail/new_user', user=user)  #给管理员发送邮件

else:

session['known'] = True

session['name'] = form.name.data

form.name.data = ''

return redirect(url_for('index'))

return render_template('index.html', name=session.get(name), known = session.get('known'), form=form)

三. 在终端导入环境变量

注意一定不要忘记导入环境变量, 之后config字典才能用os.environ.get语句获得变量值
&export MAIL_USERNAME=1660513198@qq.com

&export MAIL_PASSWORD=zwafjugafahqehic
&export FLASKY_ADMIN=15789653214@163.com

四. 运行web程序

打开数据库:



运行web程序:



在浏览器输入根地址127.0.0.1:5000:



在文本框输入Dave并点击提交按钮:



此时数据库多了一个Dave用户:



并且管理员收到一封邮件:



再次在文本框输入Dave并点击提交按钮:



可根据视图函数来分析浏览器界面的变化。

附.模板内容
mail/new_user.txt
User {{ user.username }} has joined.

mail/new_user.html
User <b>{{ user.username}}</b> has joined.

   

  

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐