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的Flask框架中实现全文搜索功能
Apr 20 Python
Django查找网站项目根目录和对正则表达式的支持
Jul 15 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
详解python中的 is 操作符
Dec 26 Python
使用Python进行AES加密和解密的示例代码
Feb 02 Python
Pycharm连接远程服务器并实现远程调试的实现
Aug 02 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
Python 爬虫的原理
Jul 30 Python
python中的django是做什么的
Jul 31 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 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时间不正确的解决方法
2008/04/09 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
解析Python中的异常处理
2015/04/28 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
新学期校长寄语
2014/01/18 职场文书
六年级数学教学反思
2014/02/03 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
毕业实习计划书
2015/01/16 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
JS class语法糖的深入剖析
2022/07/07 Javascript