Python使用腾讯云-短信服务发送手机短信
目前【腾讯云短信】为客户提供【国内短信】、【国内语音】和【海外短信】三大服务,腾讯云短信SDK支持以下操作:
国内短信
国内短信支持操作:
• 指定模板单发短信
• 指定模板群发短信
• 拉取短信回执和短信回复状态
海外短信
海外短信支持操作:
• 指定模板单发短信
• 指定模板群发短信
• 拉取短信回执和短信回复状态
注:海外短信和国内短信使用同一接口,只需替换相应的国家码与手机号码,每次请求群发接口手机号码需全部为国内或者海外手机号码。
语音通知
语音通知支持操作:
• 发送语音验证码
• 发送语音通知
• 上传语音文件
• 按语音文件fid发送语音通知
• 指定模板发送语音通知类
开发环境准备
在开始开发云短信应用之前,需要准备如下信息:
a.获取SDK AppID和AppKey
云短信应用SDK AppID和AppKey可在短信控制台的应用信息里获取,如您尚未添加应用,请到短信控制台中添加应用。
b.申请签名
一个完整的短信由短信签名和短信正文内容两部分组成,短信签名须申请和审核,签名可在短信控制台的相应服务模块内容配置中进行申请。
c.申请模板
同样短信或语音正文内容模板须申请和审核,模板可在短信控制台的相应服务模块内容配置中进行申请。
具体操作如下:
1) 注册腾讯云账号
https://cloud.tencent.com/
在产品列表内找到短信,在短信内添加应用

点击“免费领取短信”,会送一百次调用。
然后我们创建一个应用:
获取对应的SDK AppID 和 App Key
配置短信内容
注:需先申请“短信签名”和“短信正文”,按照要求填写申请即可,腾讯云的审核效率还是很快的,一般在1-2个小时内就会有结果
总结:
准备工作准备内容:SDK AppID、App Key、应用签名、短信正文模板ID。
2)安装 qcloudsms_py(腾讯云短信 Python SDK)
安装
pip
qcloudsms_py采用pip进行安装,要使用qcloudsms功能,只需要执行:
pip install qcloudsms_py
手动
github:https://github.com/qcloudsms/qcloudsms_py
1.手动下载或clone最新版本qcloudsms_py代码
2.在qcloudsms_py目录运行pythonsetup.pyinstall或直接把qcloudsms_py所在目录加入sys.path(python2/python3都支持)
开发实现
如果我们直接按官方的案例实现,会出现ssl:certificate_verify_failed这个问题,报错如下:
rubyCaughtvmodlfault:[SSL:CERTIFICATE_VERIFY_FAILED]certificateverifyfailed(_ssl.c:590)
产生这个问题的原因在于python本身,pyhon升级到2.7.9以后,引入了一个新特性,当使用urllib打开https的链接时,会检验一次ssl证书。而当目标网站使用的是自签名证书时,就会抛出urllib2.URLError的错误,所以我们这里导入了ssl的包来避免这个问题。
# @Time : 2020/5/24 22:13
# @Author : 公众号 司马弈 个人博客:chengf.cc
# @Site :
# @File : send_msg.py
# @Software: PyCharm
from qcloudsms_py import SmsSingleSender
from qcloudsms_py.httpclient import HTTPError
import random
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
# 使用腾讯云发送手机6位随机验证码
class TestQCloudSMS(object):
def __init__(self, phone_num):
self.appid ='' # 准备工作中的SDK AppID,类型:int
self.appkey = '' # 准备工作中的App Key,类型:str
self.phone_num = phone_num
self.sign = '' # 准备工作中的应用签名,类型:str
def make_code(self):
"""
:return: code 6位随机数
"""
code = ''
for item in range(6):
code += str(random.randint(0, 9))
return code
def send_msg(self):
ssender = SmsSingleSender(self.appid, self.appkey)
try:
# parms参数类型为list
rzb = ssender.send_with_param(86, self.phone_num, 613429, [self.make_code()],
sign=self.sign, extend='', ext='')
print(rzb)
except HTTPError as http:
print("HTTPError", http)
except Exception as e:
print(e)
if __name__ == '__main__':
phone_num = ['156********']
sendmsg = TestQCloudSMS(random.choices(phone_num)[0]) # 需传入发送短信的手机号,单发
sendmsg.send_msg()

当我们程序运行后,返回的"errmsg"为"ok"的时候,就发送成功了,这时我们看下手机有没有收到:
手机收到的正是我们定制的模板内容,搞定!
Python使用腾讯云-短信服务发送手机短信的更多相关文章
- springboot 项目使用阿里云短信服务发送手机验证码
1.注册阿里云账户进行账号实名认证 2.申请短信签名和模板 3.创建access_key和access_secret 4.然后就是代码编写 一.找到产品与服务里面的云通信模块,然后找到短信服务,开通短 ...
- 国都企信通短信平台发送手机短信的python脚本一例
一年前,由于工作需要,给以色列的同事解释一下国都短信平台的短信发送格式,本来不懂python的我硬着头皮写了一个sample,比较粗,能用,但不优美,希望以后学会python能改得像我同事写的那么优雅 ...
- python调用腾讯云短信接口
目录 python调用腾讯云短信接口 账号注册 python中封装腾讯云短信接口 python调用腾讯云短信接口 账号注册 去腾讯云官网注册一个腾讯云账号,通过实名认证 然后开通短信服务,创建短信应用 ...
- Java调用阿里云短信接口发送手机验证码
前五步可参考阿里云服务文档:https://help.aliyun.com/document_detail/59210.html?spm=a2c4g.11174283.4.1.2b152c42DoJ7 ...
- SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework
1.调用前组装参数 2.调用发送信息服务脚本 .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...
- 利用java实现的一个发送手机短信的小例子
今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...
- C#简单实现发送手机短信
偶然想起,像编写一个从电脑向手机发送短信的程序,从网上查找到有三种方式:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2) ...
- JAVA发送手机短信
<p><span>JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册 ...
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
装饰者模式的学习(c#) 案例转自https://www.cnblogs.com/stonefeng/p/5679638.html //主体基类 using System;using System.C ...
随机推荐
- go的调度
操作系统根据资源访问权限的不同,体系架构可以分为用户空间和内核空间:内核空间主要操作访问CPU资源,IO资源,内存资源等硬件资源,为应用程序提供最基本的基础资源:用户空间是上层应用程序的固定活动空间, ...
- 通过实例程序验证与优化谈谈网上很多对于Java DCL的一些误解以及为何要理解Java内存模型
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...
- 『现学现忘』Git基础 — 12、Git用户签名(补充)
目录 1.修改用户签名 2.取消用户签名 3.用户签名的优先级 4.总结本文用到的Git命令 1.修改用户签名 其实很简单,就是重新执行git config命令,换个用户名和邮箱地址就可以了,新配置的 ...
- 清除安装的Rancher、K8s
#清除主机的所有容器.挂载.镜像(慎用) docker stop $(docker ps -aq) docker system prune -f docker volume rm $(docker v ...
- Docker从入门到放弃(1) Docker简介与安装
目录 一.Docker简介 1.Docker是什么: 2.为什么有docke的出现: 3.docker与传统容器的区别: 4.docker基本组成 5.docker工作原理: 二.Docker安装 ...
- 【Java分享客栈】SpringBoot线程池参数搜一堆资料还是不会配,我花一天测试换你此生明白。
一.前言 首先说一句,如果比较忙顺路点进来的,可以先收藏,有时间或用到了再看也行: 我相信很多人会有一个困惑,这个困惑和我之前一样,就是线程池这个玩意儿,感觉很高大上,用起来很fashion, ...
- vue - vue基础/vue核心内容(2)
今天的内容书接上回,同样是vue的核心基础部分,今天偏向于理论性,特别是vue对于数据对象的监测那一块,刚开始琢磨了半天,这股劲一过,现在好理解多了 10.watch和computed对比 计算属性案 ...
- 万字长文详解HBase读写性能优化
一.HBase 读优化 1. HBase客户端优化 和大多数系统一样,客户端作为业务读写的入口,姿势使用不正确通常会导致本业务读延迟较高实际上存在一些使用姿势的推荐用法,这里一般需要关注四个问题: 1 ...
- Spring 源码(14)Spring Bean 的创建过程(5)
到目前为止,我们知道Spring创建Bean对象有5中方法,分别是: 使用FactoryBean的getObject方法创建 使用BeanPostProcessor的子接口InstantiationA ...
- Linux内网渗透
Linux虽然没有域环境,但是当我们拿到一台Linux 系统权限,难道只进行一下提权,捕获一下敏感信息就结束了吗?显然不只是这样的.本片文章将从拿到一个Linux shell开始,介绍Linux内网渗 ...