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函数中定义参数的四种方式
Nov 30 Python
使用python实现省市三级菜单效果
Jan 20 Python
Python中set与frozenset方法和区别详解
May 23 Python
python文本数据相似度的度量
Mar 12 Python
Python面向对象之继承和组合用法实例分析
Aug 27 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
Python中Numpy mat的使用详解
May 24 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
python deque模块简单使用代码实例
Mar 12 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
如何基于Python和Flask编写Prometheus监控
Nov 25 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 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/14 PHP
php实现简单的MVC框架实例
2015/09/23 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
js字符串转成JSON
2013/11/07 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
小程序实现搜索框
2020/06/19 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
Cython 三分钟入门教程
2009/09/17 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
Python运算符+与+=的方法实例
2021/02/18 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
竞选演讲稿范文
2013/12/28 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
企业计划生育责任书
2015/05/09 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
Redis高可用集群redis-cluster详解
2022/03/20 Redis
使用Ajax实现进度条的绘制
2022/04/07 Javascript
Nginx HTTP跳转至HTTPS
2022/05/15 Servers