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通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
Python内置函数delattr的具体用法
Nov 23 Python
微信跳一跳小游戏python脚本
Jan 05 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
Python函数中不定长参数的写法
Feb 13 Python
python自动化测试之DDT数据驱动的实现代码
Jul 23 Python
python验证码图片处理(二值化)
Nov 01 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Django中的AutoField字段使用
May 18 Python
Python3合并两个有序数组代码实例
Aug 11 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 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
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
PHP实现简单登录界面
2019/10/23 PHP
JS删除数组元素的函数介绍
2013/03/27 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
python使用nntp读取新闻组内容的方法
2015/05/08 Python
python实现中文输出的两种方法
2015/05/09 Python
python daemon守护进程实现
2016/08/27 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
python批量修改ssh密码的实现
2019/08/08 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
交通安全演讲稿
2014/01/07 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
党员个人自我评价
2015/03/03 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB
Python中re模块的元字符使用小结
2022/04/07 Python
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js