python web框架Flask——邮件验证码

本文详细介绍了如何使用Python的Flask框架发送邮件验证码,并通过Redis缓存进行验证的过程。首先,配置Flask-Mail扩展并发送邮件,接着设置Redis缓存以保存验证码,最后在后台验证前端提交的验证码是否正确,确保邮箱修改的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 = "[email protected]"
MAIL_PASSWORD = "fmrlsciykefsbbha"
MAIL_DEFAULT_SENDER = "[email protected]"

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 protected]
    email = request.args.get
为了在Flask项目中实现邮箱验证码功能,可以按照以下步骤进行操作: 1. 配置邮箱:首先需要配置邮箱服务,例如使用QQ邮箱发送验证码。可以通过开启pop3/smtp服务来配置QQ邮箱。 2. 编写前端页面:在前端页面中创建一个表单,用于输入邮箱和验证码。 3. 后台验证:在后台,通过post请求将表单数据提交给后台进行验证。在后台需要对传来的数据进行表单验证,包括验证邮箱地址格式是否正确和验证验证码是否正确。可以使用Flask-WTF扩展来进行表单验证。 4. 发送邮件:在后台视图函数中配置一个url供我们访问,用来发送邮件。在视图函数中通过flask_mail包中的Message类创建一个消息类实例,设置邮件的标题、接收者和内容。然后调用send()方法发送邮件。 5. 保存验证码:将验证码与对应的邮箱地址作为键值对保存到Redis缓存中。 以上是实现Flask项目中邮箱验证码功能的主要步骤。具体的代码实现可以参考上述引用中的代码示例。通过这些步骤,你可以在Flask项目中实现邮箱验证码功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Flask项目中实现短信验证码和邮箱验证码功能](https://download.csdn.net/download/weixin_38629391/14859343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [python web框架Flask——邮件验证码](https://blog.csdn.net/python_doris/article/details/102522372)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值