Python Flask异步发送邮件实现方法解析
作者:viewts 发布时间:2023-08-15 04:29:12
标签:Python,Flask,异步,邮件
第一步,修改工厂函数,配置邮件参数
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()方法拿到应用程序上下文。特此记录一下
来源:https://www.cnblogs.com/viewts/p/13274436.html


猜你喜欢
- 使用opencv自带的模板匹配1、目标匹配函数:cv2.matchTemplate()res=cv2.matchTemplate(image
- 下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理主要参考HEG的用户手册:h
- 今天在写一个linux下自动备份指定目录下的所有目录的脚本时,遇到了一个问题,由于我是需要备份目录,所以,需要判断扫描的文件是否为目录,当我
- 本文实例讲述了Python封装shell命令的方法。分享给大家供大家参考。具体实现方法如下:# -*- coding: utf-8 -*-i
- 说在前头最近在做毕设,题目是道路拥堵预测系统,学长建议我使用SVM算法进行预测,但是在此之前需要把Excel中的数据进行二次处理,原始数据不
- 五、XML带来的好处 (1)更有意义的搜索 数据可被XML唯一的标识。没有XML,搜索软件必须了解每个数据库是如何构建的。这实际上是不可能的
- 一、系统环境yum update升级以后的系统版本为[root@yl-web yl]# cat /etc/redhat-release Ce
- 第二次修改models.py以后再次python manage.py makemigrations提示如下You are trying to
- 在新版的Vue CLI 3中,如何导入公共less文件在文档里已经描述的很清楚了,但是在2.*的版本中,我没有查到相关的办法,网友的办法又相
- 最近出的每日一题里面,有一道是关于合并同类型数据为一行的题,使用SQL Server 2017版本及以上的直接使用STRING_AGG()函
- 1.算法:对于一组关键字{K1,K2,…,Kn}, 首先从K1,K2,…,Kn中选择最小值,假如它是 Kz,则将Kz与 K1对换;然后从K2
- 一:图形界面安装 1、打开Anconda2、点击Environment3、将Installed点击为Not installed4、搜索dja
- 要将身份证的正反面图片合并为一张图片,你可以使用PHP的GD库来完成。演示了如何合并两张图片下面是一个示例代码,演示了如何合并两张图片://
- QCheckBox 是具有两种状态的控件:开和关。它是一个带有标签的复选框。复选框通常用于表示应用程序可以启用或禁用的功能。#!/usr/b
- 1.获取function形参个数functionName.length2.较适用的运算符delete:删除以前定义的对象属性或方法的引用vo
- 0 引言年中购物618大狂欢开始了,各大电商又开始了大力度的折扣促销,我们的小胖又给大家谋了一波福利,淘宝APP直接搜索:小胖发福利,每天领
- 一、route()路由概述功能:将URL绑定到函数路由函数route()的调用有两种方式:静态路由和动态路由二、静态路由和动态路径方式1:静
- ORM简介ORM概念对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在
-   跨平台的pywifi模块支持操作无线网卡,该模块易于使用,同时支持Windows、Linux等多个系
- 一个非常实用的小方法试想一下,Django中如果我们想对保存进数据库的数据做校验,有哪些实现的方法?我们可以在view中去处理,每当view