【Flask项目】短信验证码的发送 # 7

第三方平台:

文档与下载:

云通讯

从中可以查看文档以获得帮助

点此下载云通讯SDK

配置接入信息:

(注册账号后,默认会赠送8大洋)

在info文件夹下新建libs目录,将解压得到的文件夹直接拖入libs目录即可。

 

 

配置sms.py文件中的三条信息:

 这三条信息可以从你注册的账号的管理台中看到:

依次对应复制粘贴填入即可。 

基本使用:

from info.libs.yuntongxun.sms import CCP

sms_res = CCP().send_template_sms("手机号", ["验证码", 时长], 模板)

# sms_res = CCP().send_template_sms("18011111111", ["2028", 5], 1)

效果:

 

发送短信的基本使用:

接口设计:

后端Flask代码:

import random
import re
from flask import request, jsonify, current_app
# from info.libs.yuntongxun.sms import CCP
from info import sr, constants
from info.response_code import RET
from . import blue_passport

@blue_passport.route("/sms_code", methods=["GET", "POST"])
def sms_code():
    """
        短信验证码
        1.接收参数(image_code_uuid, mobile, image_code)
        2.校验参数(image_code_uuid, mobile, image_code)
            2.1 是否都存在
            2.2 tel_number是否合法
            2.3 redis中是否存在image_code_uuid
            2.4 校验用户输入的图形验证码是否正确
        3.生成短信验证码(random)
        4.保存短信验证码到redis
        5.发送短信验证码
        6.返回结果
    :return:
    """
    # 1.接收参数(image_code_uuid, mobile, image_code)
    image_code_uuid = request.json.get("image_code_uuid")
    mobile = request.json.get("mobile")
    image_code = request.json.get("image_code")

    # 2.校验参数(image_code_uuid, mobile, image_code)
        # 2.1 是否都存在
    if not all([image_code_uuid, mobile, image_code]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数缺失")
        # 2.2 tel_number是否合法
    if not re.findall("^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$", mobile.strip()):
        return jsonify(errno=RET.PARAMERR, errmsg="手机号有误")
        # 2.3 redis中是否存在image_code_uuid
    try:
        imageCode = sr.get("imageCodeUUID:"+image_code_uuid)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库连接失败")
    if not sr:
        return jsonify(errno=RET.NODATA, errmsg="获取imageCodeUUID失败")
        # 2.4 校验用户输入的图形验证码是否正确
    if image_code != imageCode:
        return jsonify(errno=RET.PARAMERR, errmsg="验证码不正确")

    # 3.生成短信验证码(random)
    smsCode = "%04d" % random.randint(0, 9999)
    print("短信验证码:"+smsCode)

    # 4.保存短信验证码到redis
    try:
        sr.set("smsCodeTel:"+mobile, smsCode, ex=constants.SMS_CODE_REDIS_EXPIRES)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库连接失败")

    # 5.发送短信验证码
    # try:
    #     sms_res = CCP().send_template_sms("18011111111", [smsCode, constants.SMS_CODE_REDIS_EXPIRES/60], 1)
    # except Exception as e:
    #     current_app.logger.error(e)
    #     return jsonify(errno=RET.THIRDERR, errmsg="短信发送失败")
    sms_res = 0
    if sms_res != 0:
        return jsonify(errno=RET.THIRDERR, errmsg="短信发送失败")

    # 6.返回结果
    return jsonify(errno=RET.OK, errmsg="短信发送成功")

HTML代码:

<div class="form_group">
    <input type="text" name="smscode" id="smscode" class="code_pwd">
    <div class="input_tip">手机验证码</div>
    <a href="javascript:;" class="get_code" onclick="sendSMSCode()">点击获取验证码</a>
    <div id="register-sms-code-err" class="error_tip">验证码不能为空</div>
</div>

Js代码:

// 发送短信验证码
function sendSMSCode() {
    // 校验参数,保证输入框有数据填写
    $(".get_code").removeAttr("onclick");
    var mobile = $("#register_mobile").val();
    if (!mobile) {
        $("#register-mobile-err").html("请填写正确的手机号!");
        $("#register-mobile-err").show();
        $(".get_code").attr("onclick", "sendSMSCode();");
        return;
    }
    var imageCode = $("#imagecode").val();
    if (!imageCode) {
        $("#image-code-err").html("请填写验证码!");
        $("#image-code-err").show();
        $(".get_code").attr("onclick", "sendSMSCode();");
        return;
    }

    var params = {
        'mobile':mobile,
        'image_code':imageCode,
        'image_code_uuid':imageCodeId
    };

    // TODO 发送短信验证码
    $.ajax({
        url:'/passport/sms_code',   // 请求地址
        type:'post',                // 请求方法
        data:JSON.stringify(params),// 请求参数
        contentType:'application/json',// 数据类型
        success:function (response) {  // 回调函数
            if (response.errno == '0') {
                // 发送短信验证码成功
                alert(response.errmsg);
            } else {
                alert(response.errmsg);
            }
        }
    });
}

为了在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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值