Flask 邮件发送

荒凉一梦 提交于 2021-02-10 18:41:02


       

    今天小婷儿给大家分享的是Flask 邮件发送。


Flask 邮件发送


一、Flask 邮件发送

from flask import Flask, render_template, current_app

from flask_script import Manager

from flask_mail import Mail, Message

from threading import Thread



app = Flask(__name__)


# 配置邮箱服务器

app.config['MAIL_SERVER'] = 'smtp.163.com'

# 邮箱用户

app.config['MAIL_USERNAME'] = '邮箱@163.com'

# 用户密码

app.config['MAIL_PASSWORD'] = '邮箱密码'


# 创建Mail对象

mail = Mail(app)


def async_send_mail(app, msg):

    # 邮件发送需要在程序上下文中进行,

    # 新的线程中没有上下文,需要手动创建

    with app.app_context():

        mail.send(msg)



# 封装函数发送邮件

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

    # 从代理中获取代理的原始对象

    app = current_app._get_current_object()

    # 创建用于发送的邮件消息对象

    msg = Message(subject=subject, recipients=[to],

                  sender=app.config['MAIL_USERNAME'])

    # 设置内容

    msg.html = render_template(template, **kwargs)

    # 发送邮件

    # mail.send(msg)

    thr = Thread(target=async_send_mail, args=[app, msg])

    thr.start()

    return '邮件已发送'

#路由配置

@app.route('/')

def index():

    # 调用函数发送邮件

    send_mail('账户激活', '邮件接收者地址', 'activate.html', username='xenia')

    return '邮件已发送'



manager = Manager(app)


if __name__ == '__main__':

    manager.run()



二、flask-mail

说明:

专门用于发送邮件的扩展库,使用非常方便

安装:

`pip install flask-mail`

使用:

  配置邮件发送选项

  创建邮件对象

  创建消息对象

  使用邮件对象发送消息

封装函数发送邮件

  将邮件发送的操作通过一个函数完成

  使用者只需要在合适的地方调用即可

异步发送邮件

  原因:受限于网络的原因,可能会出现长时间等待的情况

  解决:在新的线程中完成邮件的发送

  问题:邮件发送需要程序上下,而新的线程中没有,因此需要手动创建程序上下文

  理解:循环引用程序实例的解决方案是使用current_app代替app




DB笔试面试历史连接

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w


小麦苗课堂培训认证

OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

高可用(RAC+DG+OGG)培训说明连接:https://mp.weixin.qq.com/s/4vf042CnOdAD8zDyjUueiw


DBA宝典小程序

  DBA宝典小程序

 本文作者:小婷儿

● 作者博客地址:http://www.cnblogs.com/xxtalhr

 版权所有,欢迎分享本文,转载请保留出处

 QQ群:483766429

 QQ号:87605025

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。


本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!