
作用:可以发邮件
Python 的 Flask-Mail 是一个非常实用的 Flask 扩展库,它提供了一个简单易用的接口来发送电子邮件。以下是 Flask-Mail 的一些主要作用和特点:
Flask-Mail 可以发送纯文本邮件和HTML邮件,支持添加附件和嵌入图片。Flask-Mail 支持异步发送邮件,提高了应用程序的响应性能。Flask-Mail 会自动处理邮件头,防止 header injection 攻击。Flask-Mail 支持信号量,可以在邮件发送时触发自定义的信号处理函数。使用 Flask-Mail,开发者可以在 Flask 应用程序中轻松地添加邮件发送功能,无论是用户注册确认、密码重置通知,还是日常的系统通知,都可以通过 Flask-Mail 来实现。通过简单的配置和几行代码,就可以发送邮件,极大地提高了开发效率和用户体验。
此处事例理解:Chrome浏览器 — 本地有联网环境 — SSL(必要) — QQ邮箱发送
设置浏览器,让Chrome可以在本地发送
设置Chrome的快捷方式属性,在“目标”后面加上 —allow-file-access-from-files,注意前面有个空格,重新打开Chrome即可。
--allow-file-access-from-files
只能通过终端打开浏览器:打开终端,输入下面命令:open -a “Google Chrome” —args —disable-web-security然后就可以屏蔽安全访问了[ —args:此参数可有可无]
open -a "Google Chrome" --args --disable-web-security
SendData(data);//调用
function SendData(data) {//方法$.ajax({url:"abc.com/text1",type:'get',dataType:"text",data:{"data":data,//发送的东西},success:function(data){//成功之后},error:function(jqXHR){}})}
设置 — 账户 — POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
开启POP3/SMTP服务和IMAP/SMTP服务
正常来说只需要SMTP就可以,不行的话两个都开
获得密码 — 复制
pip install flask-mail

| 包 | 包中文名 | 释义 | 跳转 |
|---|---|---|---|
| Flask-Mail==0.10.0 | / | / | |
| ├── blinker [required: Any, installed: 1.8.2] | / | blinker 是一个小巧的 Python 库,用于实现对象之间的信号传递。 | / |
| └── Flask [required: Any, installed: 3.0.3] | / | 主程序 | / |
| ├── blinker [required: >=1.6.2, installed: 1.8.2] | / | 同上 | / |
| ├── click [required: >=8.1.3, installed: 8.1.7] | / | Click是一个Python库,用于创建命令行界面,支持装饰器语法,易于创建命令行应用程序。 | / |
| ├── itsdangerous [required: >=2.1.2, installed: 2.2.0] | / | itsdangerous是一个Python库,用于安全地传递信任数据,支持签名和加密,常用于Web应用中的会话管理和数据验证。 | / |
| ├── Jinja2 [required: >=3.1.2, installed: 3.1.4] | / | Jinja2是一个现代且设计友好的Python模板引擎,广泛用于Web应用开发。 | Flask - 扩展 - jinja2 - 模版处理信息 - {{}} |
| │ └── MarkupSafe [required: >=2.0, installed: 3.0.1] | / | MarkupSafe 是一个 Python 库,用于安全地处理和转义 HTML 和 XML 标记。 | / |
| └── Werkzeug [required: >=3.0.0, installed: 3.0.4] | / | Werkzeug是Python的WSGI工具包,用于开发Web应用程序,提供请求、响应对象和中间件。 | / |
| └── MarkupSafe [required: >=2.1.1, installed: 3.0.1] | / | 同上 | / |
.py
from flask import Flask, jsonify, request, url_for,render_template,flash,make_responsefrom flask_mail import Mail, Messagefrom threading import Threadapp = Flask(__name__)## 配置邮件:服务器/端口/安全套接字层/邮箱名/授权码app.config['MAIL_SERVER'] = 'smtp.qq.com' # 邮箱服务器## app.config['MAIL_PORT'] = 465 # SSL端口## app.config['MAIL_USE_SSL'] = True # 重要,qq邮箱需要使用SSL## app.config['MAIL_USE_TLS'] = False # 不需要使用TLSapp.config['MAIL_PORT'] = 587 # SSL端口,服务器app.config['MAIL_USE_TLS'] = True # 需要使用TLS,服务器app.config['MAIL_USERNAME'] = '123456789@qq.com' # 填邮箱app.config['MAIL_PASSWORD'] = '填授权码' # 填授权码app.config['MAIL_DEFAULT_SENDER'] = '123456789@qq.com' # 填邮箱,默认发送者mail = Mail(app) # 然后实例化,Mail对象## text1发送data2@app.route("/text1", methods=['GET','POST'])def text1():data2 = request.args['data']print(data2)msg = Message(subject=发了个啥玩意?, # 主题sender="123456789@qq.com", # 需要使用默认发送者则不用填recipients=['111111111@qq.com','222222222@qq.com','333333333@qq.com'],body=data2,)thread = Thread(target=send_async_email, args=[app, msg])thread.start()return "ok"## 异步发送邮件def send_async_email(app, msg):with app.app_context():mail.send(msg)if __name__ == '__main__':app.run(host='127.0.0.1',port=8000)#运行在8000端口
| 参数名称 | 类型 | 说明 |
|---|---|---|
| subject | string | 主题 |
| recipients | list | 收件人邮箱 |
| body | string | 主体文本 |
| html | string | 主体文本 |
| attachments | list | 附件 |
# __init__.pyfrom flask_mail import Mail, Messagedef create_app():# 配置代码mail = Mail(app)# 配置代码return app
## 使用的.pyfrom flask_mail import Mail, Messagemail = Mail() # 然后实例化,Mail对象Email = Blueprint('Email',__name__)@Email.route("/email", methods=['POST'])def checkemail():try:# 发邮件msg = Message(subject='主题', # 主题# sender="", # 需要使用默认发送者则不用填recipients=['12345678@qq.com'],body='data',)thread = Thread(target=send_async_email, args=[Email, msg])thread.start()return jsonify({"data":"ok"})except:traceback.print_exc()return jsonify({"data":"参数要全/失败"})## 异步发送邮件def send_async_email(app, msg):from app import create_appapp = create_app()with app.app_context():mail.send(msg)