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去掉字符串中重复字符的方法
Feb 27 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
Nov 21 Python
python在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
python使用自定义user-agent抓取网页的方法
Apr 15 Python
Python列表推导式与生成器表达式用法示例
Feb 08 Python
python2.7实现爬虫网页数据
May 25 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
Python实现图片添加文字
Nov 26 Python
使用PyTorch训练一个图像分类器实例
Jan 08 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
聊聊python在linux下与windows下导入模块的区别说明
Mar 03 Python
python使用pymysql模块操作MySQL
Jun 16 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新手上路(二)
2006/10/09 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
浅析JS运动
2015/12/28 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python回调函数用法实例分析
2015/05/09 Python
Python中Class类用法实例分析
2015/11/12 Python
python实现多线程的两种方式
2016/05/22 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
医药代表个人求职信范本
2013/12/19 职场文书
面试自我介绍演讲稿
2014/04/29 职场文书
社区活动策划方案
2014/08/21 职场文书
支部书记四风对照材料
2014/08/28 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
2015年敬老院工作总结
2015/05/18 职场文书
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
防止web项目中的SQL注入
2021/12/06 MySQL