阿里云短信发送服务SDK-Python3
本文提供阿里云的短信发送服务SDK,使用Python3实现。
# -*- coding: utf-8 -*- # pip install requests import requests import urllib.request import time import uuid import hmac import base64 import datetime import json def params(accesskeyid, mobiles, tpl_code, tpl_params, sign_name): p = [ ["SignatureMethod", "HMAC-SHA1"], ["SignatureNonce", uuid.uuid4().hex], ["AccessKeyId", accesskeyid], ["SignatureVersion", "1.0"], ["Timestamp", time_now_fmt()], ["Format", "JSON"], ["Action", "SendSms"], ["Version", "2017-05-25"], ["RegionId", "cn-hangzhou"], ["PhoneNumbers", "{0}".format(mobiles)], ["SignName", sign_name], ["TemplateParam", json.dumps(tpl_params, ensure_ascii=False)], ["TemplateCode", tpl_code], ["], ] return p def time_now_fmt(): r = datetime.datetime.utcfromtimestamp(time.time()) r = time.strftime("%Y-%m-%dT%H:%M:%SZ", r.timetuple()) return r def special_url_encode(s): r = urllib.parse.quote_plus(s).replace("+", "%20").replace("*", "%2A").replace("%7E", "~") return r def encode_params(lst): s = "&".join(list(map( lambda p: "=".join([special_url_encode(p[0]), special_url_encode(p[1])]), sorted(lst, key=lambda p: p[0]) ))) return s def prepare_sign(s): r = "&".join(["GET", special_url_encode("/"), special_url_encode(s)]) return r def sign(access_secret, prepare_str): k = "{0}{1}".format(access_secret, "&") r = hmac.new(k.encode(), prepare_str.encode(), sha1).digest() base_str = base64.b64encode(r).decode() return special_url_encode(base_str) def _send_sms_ali(mobiles, tpl_code, tpl_params): prefix_url = "https://dysmsapi.aliyuncs.com/?" accesskeyid = "xxxxx" accesssecret = "xxxxx" sign_name = "xxxxx" params_lst = params(accesskeyid, mobiles, tpl_code, tpl_params, sign_name) eps = encode_params(params_lst) prepare_str = prepare_sign(eps) sign_str = sign(accesssecret, prepare_str) url = "{0}Signature={1}&{2}".format(prefix_url, sign_str, eps) r = requests.get(url) if r.status_code != 200: return False else: jn = json.loads(r.text) if jn.get("Code") == "OK": return True else: return False if __name__ == "__main__": # 签名校验测试,与测试样例一致,待拿到正式参数时再做测试修改 _tpl_code = "SMS_120785003" _tpl_params = {"} _send_sms_ali("150xxxxxxxxx,177xxxxxxxx", _tpl_code, _tpl_params)
阿里云短信发送服务SDK-Python3的更多相关文章
- Abp 添加阿里云短信发送
ABP中有短信发送接口ISmsSender public interface ISmsSender { Task<string> SendAsync(string number, stri ...
- 2018阿里云短信发送DEMO接入简单实例
以下更新2018-04-2309:57:54 后续不再更新, 基本类: app/SignatureHelper.php <?php namespace aliyun_mns; /** * 签名助 ...
- spring boot集成阿里云短信发送接收短信回复功能
1.集成阿里云通信发送短信: 在pom.xml文件里添加依赖 <!--阿里短信服务--> <dependency> <groupId>com.aliyun</ ...
- Java调用阿里云短信通道服务【千锋】
这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1 ...
- 零基础大数据入门教程:Java调用阿里云短信通道服务
这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1 ...
- .net core 使用阿里云短信发送SMS
阿里云官方的skd(aliyun-net-sdk-core,aliyun-net-sdk-dysmsapi)在dnc中发送短信会出错,nuget上的包貌似也一样不管用.直接改下sdk当然也可以,但就发 ...
- tp5阿里云短信发送
到阿里云下载php版demo,下完整版的,不是轻量级的; 框架 :TP5 把下载下来的文件放到extend里面 文件名:alimsg 里面的文件 import('alimsg.api_demo.Sm ...
- java 阿里云短信发送
记录自己的足迹,学习的路很长,一直在走着呢~ 第一步登录阿里云的控制台,找到此处: 点击之后就到此页面,如果发现账号有异常或者泄露什么,可以禁用或者删除 AccessKey: 此处方便测试,所以就新 ...
- 移动端获取短信验证码java实现——阿里云短信服务
需求:移动端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短信 ...
随机推荐
- 冥想_ PHP抽奖程序概率算法
//概率算法,6个奖项 $prize_arr = array( '0' => array('id'=>1,'prize'=>'iphone6','v'=>1), '1' =&g ...
- 解决react-router 的activeClassName 首页重复匹配问题
首先先看一下我的inedx.js入口文件: 这是未点击的时候index默认的是选中状态, 这是我点击其他的路由之后:,明显index路由重复了,仔细看了官方文档之后,发现其实Navlink也应该使用e ...
- linux个性化定制登录信息
1./etc/motd /etc/motd即messageoftoday(布告栏信息),每次用户登录时,/etc/motd文件的内容会显示在用户的终端.系统管理员可以在文件中编辑系统活动消息,例如:管 ...
- Python六大开源框架对比:Web2py略胜一筹(转)
Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...
- Android中Handler引起的内存泄露
在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用.通常我们的代码会这样实现. 1 2 3 4 5 6 7 8 9 public class SampleActivit ...
- jQuery队列(三)
看了一下队列剩下的几个方法,在没有应用场景的情况下,对它所做的一些处理不能明白.后续希望可以通过动画部分代码的阅读能搞清楚这些处理的意义.jQuery.fn.extend({ // 推迟队列中函数的执 ...
- LeetCode 79 Word Search(单词查找)
题目链接:https://leetcode.com/problems/word-search/#/description 给出一个二维字符表,并给出一个String类型的单词,查找该单词是否出现在该二 ...
- 在Linux下面的某一个文件的查找命令
借鉴文章:https://www.kafan.cn/edu/60044166.html Linux查找包含特定字符串的文件名的方法:http://www.jbxue.com/LINUXjishu/97 ...
- iOS教程:Core Data数据持久性存储基础教程
目录[-] 创建Core Data工程 创建数据模型 测试我们的数据模型 来看看SQL语句的真面目 自动生成的模型文件 创建一个表视图 之后看些什么? 就像我一直说的,Core Data是iOS编程, ...
- 在eclipse pydev中使用PEP8来规范python代码
最近在写接口自动话时,代码要上研发的PEP8检查,所以没办法,在pydev中配置如下: 1.打开PEP检查 在pydev 2.3.0之后的版本都自带了pep8检查,但默认是没有开启的 Windows ...