这里采用封装方式写发送短信服务,

当然你也可以【直接采用基础模板】,忽略步骤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")
]
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐