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 multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
django之session与分页(实例讲解)
Nov 13 Python
Python中的探索性数据分析(功能式)
Dec 22 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
Pandas库之DataFrame使用的学习笔记
Jun 21 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
python获取Linux发行版名称
Aug 30 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 Python
python文件排序的方法总结
Sep 13 Python
python 实现socket服务端并发的四种方式
Dec 14 Python
python scrapy简单模拟登录的代码分析
Jul 21 Python
python单向链表实例详解
May 25 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生成随机数或者字符串的代码
2008/09/05 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
smarty模板数学运算示例
2016/12/11 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
浅谈Redux中间件的实践
2018/07/27 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
如何运行Python程序的方法
2013/04/21 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
python使用str & repr转换字符串
2016/10/13 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
python调用支付宝支付接口流程
2019/08/15 Python
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
如何现实servlet的单线程模式
2014/08/05 面试题
公司年会策划方案
2014/05/17 职场文书
大跃进口号
2014/06/16 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
寒假致家长的一封信
2015/10/10 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
MySQL批量更新不同表中的数据
2022/05/11 MySQL