python3调用阿里云短信服务

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#Author:lzd

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 = 'xxx'
self.secret = 'xxx'
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)
return query_string

sms=AliyunSMS()
params = {"code":"test","product":"test2"}
sms.send_single(phone="13900000000", sign="猎宝网", template='SMS_33435156', params=params)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python订阅阿里云物联网平台的消息,你可以按照以下步骤进行操作: 1. 首先,你需要安装阿里云物联网平台提供的Python SDK的第三方库alibabacloud-iot-sdk。你可以使用pip命令来安装该库,命令为:pip install alibabacloud-iot-sdk。 2. 在你的Python代码中,导入阿里云物联网平台的SDK模块,例如:from alibabacloud_iot_device import client。 3. 创建一个设备连接对象,初始化设备的身份信息,例如:device = client.Device(product_key, device_name, device_secret)。其中,product_key是你的设备所属产品的Product Key,device_name是设备的名称,device_secret是设备的密钥。 4. 使用设备连接对象,调用subscribe方法来订阅阿里云物联网平台的消息,例如:device.subscribe(topic)。其中,topic是你要订阅的消息主题。 5. 在你的代码中,可以编写一个回调函数来处理接收到的消息。回调函数的参数包括消息主题和消息内容。 6. 运行你的Python代码,设备将开始订阅并接收阿里云物联网平台的消息。 请注意,以上步骤是使用阿里云物联网平台提供的SDK来订阅消息的一般步骤。具体的实现细节可能会因为你的具体需求和使用的SDK版本而有所差异。你可以参考阿里云物联网平台的官方文档和示例代码来获取更详细的信息和指导。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [mqtt实战-Python接入阿里云物联网平台实现订阅/发布](https://blog.csdn.net/JIANGYINGH/article/details/116615827)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值