Python Flask异步发送邮件实现方法解析


Posted in Python onAugust 01, 2020

第一步,修改工厂函数,配置邮件参数

from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail

db = SQLAlchemy()
mail = Mail()

def create_app():
  app = Flask(__name__)
  app.config.from_object(Config)
  db.init_app(app)
  mail.init_app(app)   from .controller import controller
  app.register_blueprint(controller)

  return app

第二步,新建一个线程来发送邮件

from flask import current_app, render_template
from flask_mail import Message
from threading import Thread
from main import mail

def send_async_email(app, msg):
  with app.app_context():
    mail.send(msg)

def send_email(to, subject, template = 'index', **kwargs):
  app = current_app._get_current_object()
  msg = Message(subject, sender = app.config['MAIL_USERNAME'], recipients = [to])
  msg.html = render_template('{}.html'.format(template), **kwargs)
  thr = Thread(target = send_async_email, args = [app, msg])
  thr.start()
  return thr

从current_app的_get_current_object()方法拿到应用程序上下文。特此记录一下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
python中去空格函数的用法
Aug 21 Python
python 系统调用的实例详解
Jul 11 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
详解重置Django migration的常见方式
Feb 15 Python
梅尔倒谱系数(MFCC)实现
Jun 19 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
详解python中index()、find()方法
Aug 29 Python
基于pytorch 预训练的词向量用法详解
Jan 06 Python
Python json转字典字符方法实例解析
Apr 13 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
Python实现弹球小游戏
Aug 01 #Python
序列化Python对象的方法
Aug 01 #Python
Python 忽略文件名编码的方法
Aug 01 #Python
Python 如何展开嵌套的序列
Aug 01 #Python
Python 日期与时间转换的方法
Aug 01 #Python
Python 执行矩阵与线性代数运算
Aug 01 #Python
Python实现数字的格式化输出
Aug 01 #Python
You might like
php 更新数据库中断的解决方法
2009/06/05 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
JS实现简单日历特效
2020/01/03 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
基于Python闭包及其作用域详解
2017/08/28 Python
python使用代理ip访问网站的实例
2018/05/07 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
python3.5的包存放的具体路径
2020/08/16 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
python statsmodel的使用
2020/12/21 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
音乐教学随笔感言
2014/02/19 职场文书
机电专业求职信
2014/06/14 职场文书
委托书格式
2014/08/01 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python