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

——————————————————————前言————————————————————————————

为了和用户进行沟通, 我们在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.


   

  

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值