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保存MongoDB上的文件到本地的方法
Mar 16 Python
Python实现的异步代理爬虫及代理池
Mar 17 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
Python编程scoketServer实现多线程同步实例代码
Jan 29 Python
python+pandas分析nginx日志的实例
Apr 28 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
django认证系统 Authentication使用详解
Jul 22 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
Jul 28 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
总结Python变量的相关知识
Jun 28 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 中文字符串首字母的获取函数分享
2013/11/04 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
python实现字符串和日期相互转换的方法
2015/05/13 Python
Python正规则表达式学习指南
2016/08/02 Python
python使用代理ip访问网站的实例
2018/05/07 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
python requests 测试代理ip是否生效
2018/07/25 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
Python提取频域特征知识点浅析
2019/03/04 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
建筑行业的大学生自我评价
2013/12/08 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
病假条格式范文
2015/08/17 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
详解Spring事件发布与监听机制
2021/06/30 Java/Android
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript