十九、Flask发送邮箱验证码功能实现

280 阅读1分钟
一、先创建一个数据库表,用户存储用户的邮箱和验证码
#此文件中创建一个数据库表,用户存储用户的邮箱、验证
class EmailCaptchaModel(db.Model):  
__tablename__ = "email_captcha"  
id = db.Column(db.Integer, primary_key=True, autoincrement=True)  
email = db.Column(db.String(100), nullable=False)  
captcha = db.Column(db.String(100), nullable=False)  

将models.py编写好的数据库表映射到数据库中,执行如下操作(三部曲),看如下链接 juejin.cn/post/732791… 表email_captcha会在数据库中创建成功

二、在auth.py文件中编写代码
from flask import request
from exts import db
import string
import random
from flask import jsonify
from models import EmailCaptchaModel

# bp.route:如果没有指定methods参数,默认就是GET请求  
@bp.route("/captcha/email")  
def get_email_captcha():  
    # /captcha/email/<email>  
    # /captcha/email?email=xxx@qq.com  
    email = request.args.get("email") #得到目标邮箱地址  
    # 4/6:随机数组、字母、数组和字母的组合  
    source = string.digits*4  
    captcha = random.sample(source, 4)  
    captcha = "".join(captcha)  
    # I/O:Input/Output  
    message = Message(subject="知了传课注册验证码", recipients=[email], body=f"您的验证码是:{captcha}")  
    mail.send(message)  
    # memcached/redis  
    # 用数据库表的方式存储  
    email_captcha = EmailCaptchaModel(email=email,captcha=captcha)  
    db.session.add(email_captcha)  
    db.session.commit()  
    # RESTful API  
    # {code: 200/400/500, message: "", data: {}}  
    return jsonify({"code": 200, "message": "", "data": None})

代码编写完成, 地址栏输入:http://xxx/auth/captcha/email?email=xbb@163.com , 执行完成页面输出内容,邮箱可收到验证码,数据库已存储邮箱和验证码

三、前端的实现 需要使用js和html相关知识,将前后端相结合,最终在注册页面输入邮箱获取验证码即可