加载中...

Django调用腾讯云sms发送短信


前言

由于项目在注册、登录、找回密码 时需要发送短信验证的功能,我们使用腾讯云短信做。

所以需要准备腾讯云账号和sms需要的签名已经模板,这么就不在交代,可以自己去申请

配置腾讯云sdk

安装sdk
pip3 install qcloudsms_py
创建发送短信文件

创建utils/tencent文件夹 在下面创建sms.qc

#!/usr/bin/env python
import ssl

# ssl._create_default_https_context = ssl._create_unverified_context
from qcloudsms_py import SmsMultiSender, SmsSingleSender
from qcloudsms_py.httpclient import HTTPError

from django.conf import settings

def send_sms_single(phone_num, template_id, template_param_list):
    """
    单条发送短信
    :param phone_num: 手机号
    :param template_id: 腾讯云短信模板ID
    :param template_param_list: 短信模板所需参数列表,例如:【验证码:{1},描述:{2}】,则传递参数 [888,666]按顺序去格式化模板
    :return:
    """
    appid = settings.SMS_APPID
    appkey = settings.SMS_APPKEY
    sms_sign = settings.SMS_SIGN  # 自己腾讯云创建签名时填写的签名内容(使用公众号的话这个值一般是公众号全称或简称)
    sender = SmsSingleSender(appid, appkey)
    try:
        response = sender.send_with_param(86, phone_num, template_id, template_param_list, sign=sms_sign)
    except HTTPError as e:
        response = {'result': 1000, 'errmsg': "网络异常发送失败"}
    return response
def send_sms_multi(phone_num_list, template_id, param_list):
    """
    批量发送短信
    :param phone_num_list:手机号列表
    :param template_id:腾讯云短信模板ID
    :param param_list:短信模板所需参数列表,例如:【验证码:{1},描述:{2}】,则传递参数 [888,666]按顺序去格式化模板
    :return:
    """
    appid = settings.SMS_APPID
    appkey = settings.SMS_APPKEY
    sms_sign = settings.SMS_SIGN  # 自己腾讯云创建签名时填写的签名内容(使用公众号的话这个值一般是公众号全称或简称)
    sender = SmsMultiSender(appid, appkey)
    try:
        response = sender.send_with_param(86, phone_num_list, template_id, param_list, sign=sms_sign)
    except HTTPError as e:
        response = {'result': 1000, 'errmsg': "网络异常发送失败"}
    return response

这里需要三个参数我这里是通过在setting中配置然后引用的

setting配置如下

SMS_APPID = '6666'
SMS_APPKEY = '66666666666'
SMS_SIGN = '66666666'
创建发送短信函数

views文件修改

from django.shortcuts import render
import random
from django.shortcuts import  HttpResponse
from utils.tencent.SMS import send_sms_single
from django.conf import settings
from django.core.validators import RegexValidator
from django.core.exceptions import ValidationError

# Create your views here.
def send_sms(request):
    code = random.randrange(100000, 999999)
    res = send_sms_single('1231231231', 1667932, [code, ])
    return HttpResponse('成功')

urls添加路由

path('app01/send/sms/', views.send_sms),

访问发送成功


文章作者: huhuhahei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 huhuhahei !
评论
  目录