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中操作MySQL入门实例
Feb 08 Python
以一段代码为实例快速入门Python2.7
Mar 31 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
python3大文件解压和基本操作
Dec 15 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
python异步实现定时任务和周期任务的方法
Jun 29 Python
Python 元组操作总结
Sep 18 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
Python使用scapy模块发包收包
May 07 Python
Python入门之使用pandas分析excel数据
May 12 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网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
HTML的select控件美化
2017/03/27 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
Python实现栈的方法
2015/05/26 Python
python3 拼接字符串的7种方法
2018/09/12 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
Django用户认证系统 User对象解析
2019/08/02 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
python2 对excel表格操作完整示例
2020/02/23 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
学校周年庆活动方案
2014/08/22 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
困难补助申请报告
2015/05/19 职场文书
理解python中装饰器的作用
2021/07/21 Python