flask-mail发送异步邮件

今天在做用户注册发送激活邮件时,看到邮件发送比较耗时,而且界面会卡在哪里,当时啪一下,马上就想到了使用多线程发送异步邮件,很快嗷。
但是,实现了后运行发现什么运行在什么之外,什么应用上下文上下文,马上看了下官方文档http://www.pythondoc.com/flask/appcontext.html,吧啦吧啦的。

下面完整代码,send_email.py,最关键的是应用上下文app.app_context()
from flask_mail import Message
from exts import mail  # 已经初始化过的mail对象
import threading


def async_send_mail(msg):
    '''异步发送邮件'''
    # 刚开始app还没创建,所在在使用到的时候再导入
    from app import app
    # 创建应用上下文(这里是最关键的)
    with app.app_context():
        mail.send(message=msg)


def send_mail(email=None, token=None):
    '''发送激活邮件
	email:收件人邮箱
	token:加密传输令牌
	'''
    msg = Message(subject='主题', recipients=[email])
    msg.html = '''
                <h1>欢迎注册</h1>
                点击下面链接激活账号(24小时后过期)<br>
                <a href="http://127.0.0.1:8000/?token=token">立即激活</a>
                ''' 
    # 创建一个线程,并启动
    t = threading.Thread(target=async_send_mail, args=(msg))
    t.start()


if __name__ == '__main__':
    print('pass')

在视图中调用send_mail(email, token)就行了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值