pythonav资源分享https://pythonav.com/wiki/detail/10/81/
这位大佬写了完整的注册以及使用,强烈推荐
1.setting.py
# 腾讯云短信
TENCENT_SMS_APPID = xx# 自己应用ID
TENCENT_SMS_APPKEY = "xx" # 自己应用Key
TENCENT_SMS_SIGN = "python后端接口开发" # 签名管理里面的 自己腾讯云创建签名时填写的签名内容(使用公众号的话这个值一般是公众号全称或简称)
# templates 短信
TENCENT_SMS_TEMPLATES = {
'register': 993292,
'login': 993155
}
2.封装的函数
# -*- coding:utf-8 -*-
# 腾讯发生短信模块
# pip3 install qcloudsms_py
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.TENCENT_SMS_APPID # 自己应用ID
appkey = settings.TENCENT_SMS_APPKEY # 自己应用Key
sms_sign = settings.TENCENT_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 # 调用
3.函数调用
def sms_msg(request):
"""发送短信?tpl =register ---15161?tpl = login ---15161"""
tpl = request.GET.get('tpl')
templates_id = settings.TENCENT_SMS_TEMPLATES.get(tpl)
if not templates_id:
return HttpResponse('请输入正确的模板id')
code = random.randrange(1000, 9999)
res = send_sms_single('19803630852', templates_id, [code])
if res["result"] == 0:
return HttpResponse('成功')
return HttpResponse(res['errmsg']) # settings.py