阿里云短信发送服务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.秘钥.签名.短信 ...
随机推荐
- 【代码审计】TuziCMS_v3.0_任意文件删除漏洞分析
0x00 环境准备 TuziCMS官网:http://www.tuzicms.com/ 网站源码版本:TuziCMS_v3.0_20161220 程序源码下载:http://www.tuzicms ...
- using 释放内存的写法
using (FileStream fileStream = File.Open(fileName,FileMode.Open,FileAccess.Read,FileShare.ReadWrite) ...
- [Python] Python 之 function, unbound method 和 bound method
首先看一下以下示例.(Python 2.7) #!/usr/bin/env python # -*- coding: utf-8 -*- class C(object): def foo(self): ...
- 安装win7到移动硬盘
jpg改rar http://www.360doc.com/content/16/0816/10/19373891_583556875.shtml
- 【docker】 centos7 安装docker
1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 通过 uname -r 命令查看你当前的内核版本 unam ...
- STL 迭代器 iterator const
STL迭代器很多时候可以当成指针来使用. 但是指针一般可以用const来控制访问. 那迭代器呢. #include <iostream> #include <vector> u ...
- c++多线程——锁技巧
[转自]here 编写程序不容易,编写多线程的程序更不容易.相信编写过多线程的程序都应该有这样的一个痛苦过程,什么样的情况呢?朋友们应该看一下代码就明白了, void data_process() { ...
- 【分享】IT产业中的三大定理(三) —— 反摩尔定理 (Reverse Moore's Law)
Google(谷歌)的 CEO 埃里克·施密特在一次采访中指出,如果你反过来看摩尔定理,一个 IT 公司如果今天和十八个月前卖掉同样多的.同样的产品,它的营业额就要降一半.IT 界把它称为反摩尔定理. ...
- UITableView 如何设置背景颜色
http://blog.sina.com.cn/s/blog_6734cee201011kya.html 原因:1.backgroundView 属性不为nil,所有设置backgroundColor ...
- Adobe Acrobat Reader DC For Android 下载
http://get.adobe.com/cn/reader/otherversions/ 点击“立即下载”按钮,即可开始下载到PC端