Django之腾讯云短信的实现


Posted in Python onJune 12, 2020

简介

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

为什么要用腾讯云短信呢? 因为注册就送 100条免费短信 的额度。

实现

注册腾讯云

注册一个腾讯云账户,腾讯云中提供了很多功能:云服务器、云存储你、云直播、云短信等很多功能。

注册地址: https://cloud.tencent.com/

注册并要实名认证

开通云短信

Django之腾讯云短信的实现

Django之腾讯云短信的实现

创建应用

创建应用并将应用中生成的 SDK AppIDApp Key 复制下来,之后通过python发送短信时需要用到。

Django之腾讯云短信的实现

Django之腾讯云短信的实现

创建签名

在腾讯云短信签名时需要认证,认证需要填写签名类型:网站、APP、小程序、公众号,前三种需要提供企业资质等复杂的东西,个人公众号认证会比较便捷,所以推荐个人开发的话使用 公众号 进行签名。

so,咱们需要先 申请一个公众号 然后 创建签名

申请微信订阅号

注册地址: https://mp.weixin.qq.com/

Django之腾讯云短信的实现

Django之腾讯云短信的实现

创建签名

Django之腾讯云短信的实现

Django之腾讯云短信的实现

创建模板

Django之腾讯云短信的实现

发送短信

上述的准备工作做完中我们开通相关服务并获取到如下几个值:

# 创建应用,获取到 appid 和 appkey
# 创建签名,获取 签名内容
# 创建模板,获取 模板ID

接下来开始使用Python发送短信。

安装SDK

pip install qcloudsms_py

基于SDK发送短信

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import ssl
# ssl._create_default_https_context = ssl._create_unverified_context
from qcloudsms_py import SmsMultiSender, SmsSingleSender
from qcloudsms_py.httpclient import HTTPError
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 = 112142311 # 自己应用ID
  appkey = "8cc5b87123y423423412387930004" # 自己应用Key
  sms_sign = "Python之路" # 自己腾讯云创建签名时填写的签名内容(使用公众号的话这个值一般是公众号全称或简称)
  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 = 112142311
  appkey = "8cc5b87123y423423412387930004"
  sms_sign = "Python之路"
  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
if __name__ == '__main__':
  result1 = send_sms_single("15131255089", 548760, [666, ])
  print(result1)
  result2 = send_sms_single( ["15131255089", "15131255089", "15131255089", ],548760, [999, ])
  print(result2)

关于频率限制

腾讯云短信后台可以进行 短信频率 的限制。

但是,由于我们是免费用户所以无法进行设置,只能使用默认的配置(30秒发1条/1小时发5条/1天发10条)。

Django之腾讯云短信的实现

到此这篇关于Django之腾讯云短信的实现的文章就介绍到这了,更多相关Django 腾讯云短信内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 2.7.x 和 3.x 版本的重要区别小结
Nov 28 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
Python 占位符的使用方法详解
Jul 10 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
python检测服务器端口代码实例
Aug 31 Python
flask实现验证码并验证功能
Dec 05 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
基于Python的自媒体小助手---登录页面的实现代码
Jun 29 Python
python 利用zmail库发送邮件
Sep 11 Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 Python
python标准库ElementTree处理xml
May 20 Python
python相对企业语言优势在哪
Jun 12 #Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 #Python
为什么说python适合写爬虫
Jun 11 #Python
python新手学习使用库
Jun 11 #Python
keras实现多种分类网络的方式
Jun 11 #Python
python的help函数如何使用
Jun 11 #Python
新手学python应该下哪个版本
Jun 11 #Python
You might like
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
第六章 php目录与文件操作
2011/12/30 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
PHP之短标签开启设置
2013/06/17 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
常用js脚本
2006/12/03 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
python微信公众号开发简单流程
2018/03/23 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
钳工实习自我鉴定
2013/09/19 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
百年校庆节目主持词
2014/03/27 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书