使用阿里云短信接口的Python代码如下:
import urllib.parse
import urllib.request
import json
import hashlib
import time
def send_sms(access_key, access_secret, phone_numbers, sign_name, template_code, template_param):
# 构建请求参数
params = {
'AccessKeyId': access_key,
'Action': 'SendSms',
'Format': 'JSON',
'PhoneNumbers': phone_numbers,
'SignName': sign_name,
'TemplateCode': template_code,
'TemplateParam': template_param,
'SignatureMethod': 'HMAC-SHA1',
'SignatureNonce': str(int(time.time() * 1000)),
'SignatureVersion': '1.0',
'Timestamp': time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),
'Version': '2017-05-25',
}
# 计算签名
sorted_params = sorted(params.items(), key=lambda x: x[0])
canonicalized_query_string = ''
for k, v in sorted_params:
canonicalized_query_string += '&' + urllib.parse.quote_plus(k) + '=' + urllib.parse.quote_plus(v)
string_to_sign = 'GET&%2F&' + urllib.parse.quote_plus(canonicalized_query_string[1:])
hmacsha1 = hashlib.sha1((access_secret+'&').encode('utf-8')).hexdigest()+'&'
signature = hashlib.sha1((hmacsha1+string_to_sign).encode('utf-8')).hexdigest()
params['Signature'] = signature
# 发送请求
url = 'http://dysmsapi.aliyuncs.com/?' + urllib.parse.urlencode(params)
req = urllib.request.Request(url)
with urllib.request.urlopen(req) as response:
res = response.read().decode('utf-8')
res_json = json.loads(res)
return res_json
# 使用示例
access_key = 'your_access_key'
access_secret = 'your_access_secret'
phone_numbers = '13800000000,13900000000' # 支持多个手机号,用逗号分隔
sign_name = 'your_sign_name' # 短信签名
template_code = 'your_template_code' # 短信模板CODE
template_param = '{"code":"123456"}' # 模板参数
res = send_sms(access_key, access_secret, phone_numbers, sign_name, template_code, template_param)
print(res)
在使用代码之前,需要将your_access_key
替换为自己的阿里云AccessKey ID,将your_access_secret
替换为自己的Access Key Secret,将your_sign_name
替换为自己短信签名,在阿里云控制台上创建短信模板并获取模板CODE,将your_template_code
替换为自己的短信模板CODE。
在调用send_sms
函数时,将手机号以字符串形式传入phone_numbers
参数,多个手机号用逗号分隔;将短信模板参数以JSON字符串形式传入template_param
参数。
发送短信后接口返回的结果为JSON格式,可以根据需要进行解析和处理。
阿里云提供了Python SDK方便开发者使用阿里云短信接口。下面是使用Python SDK发送短信的示例代码:
- 安装aliyun-python-sdk-core和aliyun-python-sdk-dysmsapi依赖库:
pip install aliyun-python-sdk-core
pip install aliyun-python-sdk-dysmsapi
- 导入SDK和设置AccessKey信息:
from aliyunsdkcore.client import AcsClient
from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
# AccessKey信息,可以在阿里云控制台获取
access_key_id = "<your_access_key_id>"
access_key_secret = "<your_access_key_secret>"
# 初始化AcsClient
client = AcsClient(access_key_id, access_key_secret, "default")
- 发送短信:
def send_sms(phone_numbers, sign_name, template_code, template_param):
# 构造请求
request = SendSmsRequest.SendSmsRequest()
request.set_accept_format('json')
request.set_SignName(sign_name) # 设置短信签名
request.set_TemplateCode(template_code) # 设置短信模板Code
request.set_TemplateParam(template_param) # 设置短信模板变量
request.set_PhoneNumbers(phone_numbers) # 设置接收短信的手机号码,多个手机号码以逗号分隔
# 发送请求
response = client.do_action_with_exception(request)
# 解析响应
response_data = json.loads(response.decode('utf-8'))
if response_data.get('Code') == 'OK':
print("短信发送成功")
else:
print("短信发送失败")
# 调用发送短信函数
phone_numbers = "手机号码"
sign_name = "短信签名"
template_code = "短信模板Code"
template_param = "{"code":"123456"}" # 短信模板变量,以json格式传递
send_sms(phone_numbers, sign_name, template_code, template_param)
注意替换上述代码中的<your_access_key_id>
和<your_access_key_secret>
为你自己的AccessKey信息,以及设置正确的手机号码、短信签名和短信模板Code。
以上就是使用Python SDK发送阿里云短信的示例代码。希望对你有帮助!
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/111893.html