初学:使用Flask发邮件,完整例子及实现异步发送邮件!

本文主要参考自:https://blog.csdn.net/weixin_36380516/article/details/80453275,侵权立删!

----------------------------------------------------------------------------------------------------------------------------------------------------------

邮件服务用途较多,如:注册时验证用户、找回密码、线上程序出现重大bug时触发邮件提醒以及服务器关键数据(CPU、网络、内存)监控提醒等,可以说随处可以用到,下面讲解了一个使用flask_mail实现的邮件发送功能,有完整代码,测试可行。

 

首先下载依赖库flask_mail

pip install flask_mail

配置信息:

app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = 'xxx@qq.com' //邮箱账号
app.config['MAIL_PASSWORD'] = 'xxxx'  //QQ邮箱授权码
mail = Mail(app)

注意,password这里填写的不是邮箱密码,而是邮箱授权码,关于QQ邮箱授权码如何获取,可以自行百度

其他参考配置信息(可选)

配置项默认值功能
MAIL_SERVERlocalhost邮箱服务器
MAIL_PORT25端口
MAIL_USE_TLSFalse是否使用TLS
MAIL_USE_SSLFalse是否使用SSL
MAIL_DEBUGapp.debug是否为DEBUG模式,打印调试消息
MAIL_SUPPRESS_SENDapp.testing设置是否真的发送邮件,True不发送
MAIL_USERNAMENone用户名,填邮箱
MAIL_PASSWORDNone密码,填授权码
MAIL_DEFAULT_SENDERNone默认发送者,填邮箱
MAIL_MAX_EMAILSNone一次连接中的发送邮件的上限
MAIL_ASCII_ATTACHMENTSFalse如果 MAIL_ASCII_ATTACHMENTS 设置成 True 的话,文件名将会转换成 ASCII 的。一般用于添加附件。

一个例子send_mail.py:

使用python send_mail.py运行,然后用浏览器访问http://127.0.0.1:5000/,即可发出邮件

# -*- coding: utf-8 -*-
from flask import Flask
from flask_mail import Mail, Message
 
app = Flask(__name__)

app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = '1754XXXXXX@qq.com'
app.config['MAIL_PASSWORD'] = 'xxxxhqczyuamfbjh'

mail = Mail(app)
@app.route('/')
    msg = Message('标题', sender='1754XXXXXX@qq.com', recipients=['xxxxx@163.com'])
    msg.body = '内容XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    mail.send(msg)
    return 'Sent'
 
if __name__ == '__main__':
    app.run(debug=True)

 上面是一个发送邮件的简单示例,只要访问,就会发送邮件到收件箱。在实际运用中,发送邮件通常需要几秒中,当触发发送邮件条件时我们不会在页面停留等他发完才去进行别的操作,而是为发送邮件服务开启另一个线程,对上面的例子进行修改如下即可:

# -*- coding: utf-8 -*-
from flask import Flask
from flask_mail import Mail, Message
from threading import Thread
 
app = Flask(__name__)

app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = '1754XXXXXX@qq.com'
app.config['MAIL_PASSWORD'] = 'xxxxhqczyuamfbjh'

mail = Mail(app)

def send_async_email(app,msg):
    with app.app_context():
        mail.send(msg)

@app.route('/')
    msg = Message('标题', sender='1754XXXXXX@qq.com', recipients=['xxxxx@163.com'])
    msg.body = '内容XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    thread = Thread(target=send_async_email,args=[app,msg])
    thread.start()
    return "Sent"'
 
if __name__ == '__main__':
    app.run(debug=True)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值