发送短信验证码二次封装

发送短信服务二次封装

在libs文件夹下创建包sms

然后再创建settings.py以及sms_main.py

settings.py

# 短信应用 SDK AppID
APPID = 1400669171  # SDK AppID 以1400开头

# 短信应用 SDK AppKey
APPKEY = "35374dbccf88d2fab8af32885125af96"

# 短信模板ID,需要在短信控制台中申请
TEMPLATE_ID = 1379089  # NOTE: 这里的模板 ID`7839` 只是示例,真实的模板 ID 需要在短信控制台中申请

# 签名
SMS_SIGN = "z姓程序猿公众号"  # NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请

sms_main.py

from qcloudsms_py import SmsSingleSender
from utils.log import logger
import random
from . import settings


# 获取验证码(默认为4)
def get_code(count=4):
    code = ''
    for i in range(count):
        temp = random.randint(0, 9)
        code += str(temp)
    return code


# 发送短信
def send_sms(phone, code):
    ssender = SmsSingleSender(settings.APPID, settings.APPKEY)
    params = [code, '5']  # 当模板没有参数时,`params = []`
    try:
        result = ssender.send_with_param(86, phone,
                                         settings.TEMPLATE_ID, params, sign=settings.SMS_SIGN, extend="", ext="")
        if result.get('result') == 0:
            return True
        else:
            # 发送失败记录日志 因为这个日志配置的是Django框架的参数,其他可能不能用,可以用判断是False在外面记录日志的方法
            logger.error('手机号为%s,发送短信失败' % phone)
            return False
    except Exception as e:
        logger.error('手机号为%s发送短信失败,原因为%s' % (phone, str(e)))
        return False

init.py

from .sms_main import get_code, send_sms

使用

在views.py中

from libs import sms
# 发送短信接口
class SendMsgAPIView(ViewSet):
    @action(methods=['get'], detail=False)
    def message(self, request):
        # get请求取出数据
        mobile = request.query_params.get('mobile', None)
        if not mobile:
            raise APIException('手机号没传')
        # 获取验证码
        code = sms.get_code()
        # 发送短信
        res = sms.send_sms(mobile, code)
        if res:  # 如果是其他框架根据返回值如果是False来记录日志
            return APIResponse(msg='短信发送成功')
        else:
            return APIResponse(msg='短信发送失败')
posted @ 2022-04-24 22:18  zong涵  阅读(66)  评论(0编辑  收藏  举报