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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
python实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python数据结构之顺序表的实现代码示例
Nov 15 Python
用Pygal绘制直方图代码示例
Dec 07 Python
python与caffe改变通道顺序的方法
Aug 04 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
python3实现字符串操作的实例代码
Apr 16 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
Python csv文件记录流程代码解析
Jul 16 Python
python进行二次方程式计算的实例讲解
Dec 06 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中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
Python读取excel中的图片完美解决方法
2018/07/27 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
详解python中的Turtle函数库
2018/11/19 Python
Python多进程写入同一文件的方法
2019/01/14 Python
python版DDOS攻击脚本
2019/06/12 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
一套中级Java程序员笔试题
2015/01/14 面试题
致标枪运动员加油稿
2014/02/15 职场文书
一年级学生期末评语
2014/04/21 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
九年级语文教学反思
2016/03/03 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
SpringBoot集成Redis的思路详解
2021/10/16 Redis
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫
Python OpenCV超详细讲解基本功能
2022/04/02 Python
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android