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 ...
随机推荐
- 一行代码的魅力 -- css
<template> <div></div> </template> <script> export default { } </sc ...
- 控制Python浮点数输出位数
技术背景 在Python的一些长效任务中,不可避免的需要向文本文件.二进制文件或者数据库中写入一些数据,或者是在屏幕上输出一些文本,此时如何控制输出数据的长度是需要我们注意的一个问题.比如对于一个二进 ...
- 超越iTerm! 号称下一代终端神器,功能贼强大!
程序员的一生,用的最多的两个工具,一个是代码编辑器(Code Editor),另外一个就是命令行终端工具(Terminal).这两个工具对于提高开发效率至关重要. 代码编辑器在过去的 40 年里不断进 ...
- [AcWing 797] 差分
点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int a[N], b[N]; void in ...
- vue - vue基础/vue核心内容
终于算是顺利进入vue了,确实也只有学了过后才知道,之前三过vue而不学,确实是对的,现在进来了一点都不后悔,ajax.node.js.promise.webpack.git等等确实是除了三大基础外还 ...
- Linux 运维工程师面试问答录(推荐阅读)
一个执着于技术的公众号 本文整理了一些比较常见的 Linux 相关的面试题目,该问答录主要分为基础知识篇和服务器篇.内容主要涉及 Linux 基本原理.常用命令操作.服务器应用等部分的内容. Linu ...
- Spring Ioc源码分析系列--Ioc源码入口分析
Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了I ...
- Mybatis-Plus入门实践
简介 Mybatis-Plus 简称 MP ,是 Mybatis 的增强工具,提供了一批开箱即用的功能.特性.接口.注解,简化了应用程序访问数据库的相关操作,完善了Mybatis作为ORM仅能做到半自 ...
- 并发编程之volatile与JMM多线程内存模型
一.通过程序看现象 在开始为大家讲解Java 多线程缓存模型之前,我们先看下面的这一段代码.这段代码的逻辑很简单:主线程启动了两个子线程,一个线程1.一个线程2.线程1先执行,sleep睡眠2秒钟之后 ...
- c++:-7
上一节主要学习C++中的函数模版.数据结构以及排序查找操作:c++:-6,本节学习C++的范型程序设计和STL: 范型程序设计 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通 ...