python阿里云短信服务
·
这里采用封装方式写发送短信服务,
当然你也可以【直接采用基础模板】,忽略步骤3封装步骤。
1. 安装阿里云的 Python SDK
pip install aliyun-python-sdk-core-v3
pip install aliyun-python-sdk-dysmsapi
2.阿里云发送短信的基础模板
# 配置阿里云AccessKey ID和AccessKey Secret,这两个值是在阿里云账户管理中获取的,用于验证API请求的身份 【更换这两个】
ACCESS_KEY_ID = ''
ACCESS_KEY_SECRET = ''
# 创建AcsClient实例,用于发送请求到阿里云服务,参数包括AccessKey ID和Secret,以及服务区域(这里是杭州)
client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, 'cn-hangzhou')
# 生成一个4位随机验证码,随机从0-9数字中,选择4个数字组合成字符串
code = ''.join(random.sample('0123456789', 4))
# 创建一个CommonRequest实例,用于设置发送到阿里云短信API的具体参数 [请求参数] [固定模板无需更改]
request = CommonRequest()
request.set_accept_format('json') # 设置API的响应格式为json
request.set_domain('dysmsapi.aliyuncs.com') # 设置调用的短信API的域名
request.set_method('POST') # 设置请求方式为POST
request.set_protocol_type('https') # 设置请求协议为HTTPS
request.set_version('2017-05-25') # 设置API的版本号
request.set_action_name('SendSms') # 设置调用的操作接口名为SendSms
# 以下是短信API所需的参数 [短信参数] 【更换中间三个】
request.add_query_param('RegionId', "cn-hangzhou") # 设置服务区域,与客户端实例保持一致
request.add_query_param('PhoneNumbers', "用于发送手机号") # 设置接收短信的手机号码
request.add_query_param('SignName', "短信签名") # 设置短信签名,这在阿里云短信服务中预设
request.add_query_param('TemplateCode', "短信模板ID") # 设置短信模板ID,这在阿里云短信服务中预设
request.add_query_param('TemplateParam', '{"code": "%s"}' % code) # 设置短信模板中的变量,这里是验证码
# 发送请求,并获取响应
response = client.do_action_with_exception(request)
# 短信结果
print(response)
3.发送短信的功能【进行封装方便重复调用】
3.1:新建包 - 并放入上面基础模板 ( 注意替换必要参数 )

3.2:更改模板中的必要参数 :下面是更换后的示例 【封装完毕】
import random
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
def send_sms(phone):
# 配置阿里云AccessKey ID和AccessKey Secret,这两个值是在阿里云账户管理中获取的,用于验证API请求的身份 【更换这两个】
ACCESS_KEY_ID = 'LTA......'
ACCESS_KEY_SECRET = '775......'
# 创建AcsClient实例,用于发送请求到阿里云服务,参数包括AccessKey ID和Secret,以及服务区域(这里是杭州)
client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, 'cn-hangzhou')
# 生成一个4位随机验证码,随机从0-9数字中,选择4个数字组合成字符串
code = ''.join(random.sample('0123456789', 4))
# 创建一个CommonRequest实例,用于设置发送到阿里云短信API的具体参数 [请求参数] [固定模板无需更改]
request = CommonRequest()
request.set_accept_format('json') # 设置API的响应格式为json
request.set_domain('dysmsapi.aliyuncs.com') # 设置调用的短信API的域名
request.set_method('POST') # 设置请求方式为POST
request.set_protocol_type('https') # 设置请求协议为HTTPS
request.set_version('2017-05-25') # 设置API的版本号
request.set_action_name('SendSms') # 设置调用的操作接口名为SendSms
# 以下是短信API所需的参数 [短信参数] 【更换中间三个】
request.add_query_param('RegionId', "cn-hangzhou") # 设置服务区域,与客户端实例保持一致
request.add_query_param('PhoneNumbers', phone) # 设置接收短信的手机号码
request.add_query_param('SignName', "xxx集团") # 设置短信签名,这在阿里云短信服务中预设
request.add_query_param('TemplateCode', "SMS_160......") # 设置短信模板ID,这在阿里云短信服务中预设
request.add_query_param('TemplateParam', '{"code": "%s"}' % code) # 设置短信模板中的变量,这里是验证码
# 发送请求,并获取响应
response = client.do_action_with_exception(request)
# 短信结果
print(response)
3.3:在 login 包下 view.py 写方法调用 封装用于发送的短信
(只是一个简单测试模板,这地方需要你根据业务与前端交互)
import json
from django.http import HttpResponse, JsonResponse
from login.aboutLoginUtil.loginUtil import send_sms
@csrf_exempt
def sendingInterface(request):
if request.method == 'POST':
phone = 178...... # 在此处可以填自己手机号测
response = send_sms(phone)
return JsonResponse(response, safe=False)
3.4 最重要一步别忘了对 view.py 的 sendingInterface 在路由中进行书写进行调 用
【至此结束】
from django.urls import path
from . import views
urlpatterns = [
path('send', views.sendingInterface, name="send")
]
更多推荐
所有评论(0)