Flask获取邮件验证码的全过程大致可以分为三大过程:(项目实例:修改邮箱)
1、发送邮件
1)首先我们需要配置邮件扩展,谈到扩展,我们就需要将扩展包和实例都放置在扩展文件中(我们需要下载:pip install flask-mail)
主目录/exts.py
from flask_mail import Mail
mail = Mail()
2)扩展类的实例都是需要绑定到app上(和前面提到的数据库db实例一样)
主目录/app.py
from exts import mail
from flask import Flask
def create_app():
app = Flask(__name__)
mail.init_app(app)
return app
3)有扩展类的实例,却没有配置文件,这时我们需要在config.py文件中配置mail,使用了MAIL_USE_TSL的端口号,就将另一个端口注释掉,相关说明已经在代码中
主目录/config.py
# 发送者邮箱的服务器地址
MAIL_SERVER = "smtp.qq.com"
# MAIL_USE_TLS:端口号587
# MAIL_USE_SSL:端口号465
# QQ邮箱不支持非加密方式发送邮件
MAIL_PORT = 587
MAIL_USE_TLS = True
# MAIL_USE_SSL = False
MAIL_USERNAME = "599663430@qq.com"
MAIL_PASSWORD = "fmrlsciykefsbbha"
MAIL_DEFAULT_SENDER = "599663430@qq.com"
4)一些相关的文件需要借用上一篇的“python web框架Flask——csrf攻击”的文件,这里就添加一些必要的代码。在视图函数中配置一个url供我们访问(发送邮件)。另外我们从flask_mail包中导入Message类,创建消息类实例,第一个参数是邮件的标题,第二个参数是邮件的接收者,第三个参数是邮件的内容。定义好通过mail实例下的send()方法发送
主目录/app/cms/views.py
@bp.route("/email_captcha")
def email_captcha():
"""
发送邮件我们不需要跳转页面,不需要重定向;邮件地址信息只需通过get方式请求即可
后台获取邮件信息需要进行相关的判断,没有通过验证就将信息(状态码,信息)发送到前端页面(js文件处理)
通过验证,我们需要自制验证码,将验证码发送到接收者邮件,并且以邮件地址为键,验证码为值保存到redis缓存中
:return:
"""
# /email_captcha/?email=X