用Python调用阿里云的短信接口
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Frank import uuid
import datetime
import hmac
import base64
import requests
from urllib.parse import urlencode, quote class AliyunSMS(object):
def __init__(self): self.format = "JSON"
self.version = "2017-05-25"
self.key = '你的key'
self.secret = '你的secret'
self.signature = ""
self.signature_method = "HMAC-SHA1"
self.signature_version = "1.0"
self.signature_nonce = str(uuid.uuid4())
self.timestamp = datetime.datetime.utcnow().isoformat("T")
self.region_id = 'cn-hangzhou' self.gateway = "http://dysmsapi.aliyuncs.com"
self.action = "SendSms"
self.sign = ""
self.template = ""
self.params = {}
self.phones = "" def send_single(self, phone, sign, template, params):
self.action = "SendSms"
self.phones = phone
self.sign = sign
self.params = params
self.template = template query_string = self.build_query_string() resp = requests.get(self.gateway + "?" + query_string).json()
model = resp.get("Model")
if model is not None:
return True
# print(model)
print("send sms to %s , reason: %s" % (self.phones, resp.get("Message")))
print(resp)
return False def build_query_string(self):
query = []
query.append(("Format", self.format))
query.append(("Version", self.version))
query.append(("AccessKeyId", self.key))
query.append(("SignatureMethod", self.signature_method))
query.append(("SignatureVersion", self.signature_version))
query.append(("SignatureNonce", self.signature_nonce))
query.append(("Timestamp", self.timestamp))
query.append(("RegionId", self.region_id))
query.append(("Action", self.action))
query.append(("SignName", self.sign))
query.append(("TemplateCode", self.template))
query.append(("PhoneNumbers", self.phones))
params = "{"
for param in self.params:
params += "\"" + param + "\"" + ":" + "\"" + str(self.params[param]) + "\"" + ","
params = params[:-1] + "}"
# print(params)
query.append(("TemplateParam", params))
query = sorted(query, key=lambda key: key[0])
query_string = ""
i = 0
for item in query:
query_string += quote(item[0], safe="~") + "=" + quote(item[1], safe="~") + "&"
i += 1
print(query_string)
# print(i)
query_string = query_string[:-1]
# print(query_string)
tosign = "GET&%2F&" + quote(query_string, safe="~")
secret = self.secret + "&"
hmb = hmac.new(secret.encode("utf-8"), tosign.encode("utf-8"), "sha1").digest()
self.signature = quote(base64.standard_b64encode(hmb).decode("ascii"), safe="~")
query_string += "&" + "Signature=" + self.signature
print('query_string',query_string)
return query_string
sms = AliyunSMS()
import random
l = []
for i in range(6):
s = str(random.randint(0, 10))
l.append(s)
ss = ''.join(l)
# print('ss', ss)
params = {"code": ss}#这就是随机生成的6位数
sms.send_single(phone="这就是你想给谁发电话号码", sign="你注册时的sign", template='你注册的模板名称', params=params)
用Python调用阿里云的短信接口的更多相关文章
- php 阿里云国内短信实例
调用:先去阿里云申请短信服务 $smsArr = array( "accessKeyId" => "", // key "accessKeySe ...
- Java版阿里云通信短信发送API接口实例(新)
阿里云通信(原名阿里大于)的短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等. 完美支撑双11期间2亿用户,发送6亿短信 ...
- Node 接入阿里云实现短信验证码
本文介绍在案例云开通短信服务的流程以及在Node项目中使用的方法. 一.开通阿里云短信服务 登陆阿里云,然后进入 https://dysms.console.aliyun.com/dysms.htm ...
- golang sms阿里云发送短信(公司实际项目)
话不多说,直接上代码!!! 要先下载两个包 (可以go get -u +你想要的包) github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests githu ...
- Delphi - Delphi7 调用阿里大于实现短信消息验证
阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信.语音.流量直充.私密专线.店铺手机号等个性化服务.每条四分五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到.官方文档提供 ...
- Python 调用阿里云 API 收集 ECS 数据
#!/usr/bin/env python # coding: utf-8 # author: Wang XiaoQiang ''' 功能介绍: 1.调用阿里云API,收集所有区域 ECS 信息 2. ...
- 短信接口调用以及ajax发送短信接口实现以及前端样式
我们短信api用的是云信使平台提供的非免费短信服务:官网提供的demo有两种,分别是function加其调用.class文件加其调用. 在这里我们用class文件加调用: 首先,ThinkPHP里面自 ...
- python3实现阿里云发短信
一.准备工作 1.安装阿里云SDK pip install aliyun-python-sdk-core-v3 2.新建签名并等待审核通过 审核通过后,记下**[签名名称](参数1)**,程序中会用到 ...
- ThinkPHP使用阿里云通信短信服务
一.下载SDK 目前给出的SDK版本有JAVA.PHP.Python三个版本,我们使用PHP版本 二.文档结构 将下载的PHP-SDK解压,放入tp框架的Library目录下 发送短信主要使用api_ ...
随机推荐
- T-SQL :编程理论 (一)
SQL代表结构化查询语言,是一种在关系数据库系统中查询和管理数据的标准语言.sql语句也有几个类别,包括定义语言(DDL),数据操作语言(DML),数据控制语言(DCL). DDL包括create,a ...
- nginx配置虚拟机
在/usr/local/nginx/conf目录下nginx.conf文件是nginx的配置文件. 一.通过端口号区分虚拟机 在nginx.conf文件中添加一个Service节点,修改端口号: se ...
- 你所不知道的JSON.stringify
译者按: 老司机们,你知道JSON.stringify还有第二个和第三个可选参数吗?它们是什么呢? 原文: What you didn’t know about JSON.Stringify 译者: ...
- javascript模块化编程-立即执行函数(IIFE)
IIFE 全拼Imdiately Invoked Function Expression,立即执行的函数表达式. 语法 var module1 = (function(){ var _count = ...
- 有序列表ol,无序列表ul,定义列表dl
====================非常重要=================无序列表ul中有一个type属性四个属性值type="disc" 实心圆点(默认) type=&q ...
- Git学习(一)
版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制. 一.集中式版本控制系统 v.s ...
- elementUI vue 页面加载的时候页面出现了黑字 页面优化处理 按钮弹出框文字
elementUI 页面如果需要加载很多东西的时候, 自己定义的按钮或者弹出框dialog的文字就会显示在页面上, 一闪而过, 因此需要优化一下, elementUI 提供的loading有遮罩层, ...
- 小tips:JS严格模式(use strict)下不能使用arguments.callee的替代方案
在函数内部,有两个特殊的对象:arguments 和 this.其中, arguments 的主要用途是保存函数参数, 但这个对象还有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 a ...
- 14.Odoo产品分析 (二) – 商业板块(7) –制造(1)
查看Odoo产品分析系列--目录 一旦你收到了库存中所需的原材料,就可以开始生产终端产品了.ERP系统的部分功能是帮助您根据可用资源调度这些订单.其中一项资源是原产品.其他资源可以包括可用劳动力或特定 ...
- mybatis的三种批量插入以及次效率比较
1.表结构 CREATE TABLE `t_user` ( `id` varchar(32) CHARACTER SET utf8 NOT NULL COMMENT '主键', `name` varc ...