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程序与C++程序的联合使用
Apr 07 Python
Python3实现从指定路径查找文件的方法
May 22 Python
python中的代码编码格式转换问题
Jun 10 Python
python使用clear方法清除字典内全部数据实例
Jul 11 Python
python中PIL安装简单教程
Apr 21 Python
Python中字典的setdefault()方法教程
Feb 07 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
python中图像通道分离与合并实例
Jan 17 Python
python获取依赖包和安装依赖包教程
Feb 13 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
Apr 03 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
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
php简单复制文件的方法
2016/05/09 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
django中静态文件配置static的方法
2018/05/20 Python
分析python请求数据
2018/08/19 Python
Django 外键的使用方法详解
2019/07/19 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
编码实现字符串转整型的函数
2012/06/02 面试题
中层竞聘演讲稿
2014/01/09 职场文书
秋天的图画教学反思
2014/05/01 职场文书
外联部演讲稿
2014/05/24 职场文书
测控技术自荐信
2014/06/05 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
结婚仪式主持词
2015/06/29 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
2015年女工委工作总结
2015/07/27 职场文书
六年级语文教学反思
2016/03/03 职场文书