本篇文章是使用Python的Web框架Django提供发送短信接口供前端调用,Python版本2.7
阿里云入驻、申请短信服务、创建应用和模板等步骤请参考:阿里云短信服务入门
1、下载sdk
SDK工具包中一共包含了2个目录:
aliyun-python-sdk-core:阿里云api调用的核心代码库,python版本。
alicom-python-sdk-dysmsapi:流量直冲相关接口调用的客户端以及示例代码。
确定本机已经安装了python,版本要求:2.6.5 或以上版本。
进入aliyun-python-sdk-core 执行:python setup.py install。
运行demo示例。进入alicom-python-sdk- dysmsapi目录执行:python demo.py 。
2、编写发送短信 utils.py:
1 # coding=utf-8 2 import sys 3 4 from aliyunsdkcore.client import AcsClient 5 from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest, QuerySendDetailsRequest 6 7 reload(sys) 8 sys.setdefaultencoding('utf8') 9 10 REGION = "cn-hangzhou" 11 ACCESS_KEY_ID = "yourAccessKeyId" 12 ACCESS_KEY_SECRET = "yourAccessKeySecret" 13 14 acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION) 15 16 17 def send_sms(business_id, phone_numbers, sign_name, template_code, template_param=None): 18 smsRequest = SendSmsRequest.SendSmsRequest() 19 # 申请的短信模板编码,必填 20 smsRequest.set_TemplateCode(template_code) 21 22 # 短信模板变量参数 23 if template_param is not None: 24 smsRequest.set_TemplateParam(template_param) 25 26 # 设置业务请求流水号,必填。 27 smsRequest.set_OutId(business_id) 28 29 # 短信签名 30 smsRequest.set_SignName(sign_name); 31 32 # 短信发送的号码列表,必填。 33 smsRequest.set_PhoneNumbers(phone_numbers) 34 35 # 调用短信发送接口,返回json 36 smsResponse = acs_client.do_action_with_exception(smsRequest) 37 38 return smsResponse 39 40 def query_send_detail(biz_id, phone_number, page_size, current_page, send_date): 41 queryRequest = QuerySendDetailsRequest.QuerySendDetailsRequest() 42 # 查询的手机号码 43 queryRequest.set_PhoneNumber(phone_number) 44 # 可选 - 流水号 45 queryRequest.set_BizId(biz_id) 46 # 必填 - 发送日期 支持30天内记录查询,格式yyyyMMdd 47 queryRequest.set_SendDate(send_date) 48 # 必填-当前页码从1开始计数 49 queryRequest.set_CurrentPage(current_page) 50 # 必填-页大小 51 queryRequest.set_PageSize(page_size) 52 53 # 调用短信记录查询接口,返回json 54 queryResponse = acs_client.do_action_with_exception(queryRequest) 55 56 return queryResponse
3、编写发送短信验证码(也可以是其他的)api接口,验证码需要放入缓存,安装redis,pip install django-redis
1 import uuid 2 3 from django.http import JsonResponse 4 from django.utils.crypto import get_random_string 5 from jsonrpc import jsonrpc_method 6 7 from sms.utils import send_sms 8 from django.core.cache import cache 9 10 11 def send_sms_view(request): 12 """ 13 发送验证码 14 :param request: 15 :return: 16 """ 17 business_id = uuid.uuid1() 18 code = get_random_string(length=4, allowed_chars='0123456789') 19 params = "{\"code\":\"" + code + "\"}" 20 send_sms(business_id, request.GET.get('telephone'), "发送方名称", "自定义模板名称", params) 21 cache.set(request.GET.get('telephone'), code, timeout=600) 22 return JsonResponse({'success': True})
前端通过调用send_sms_view接口发送短信
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2015-04-02 linux监控脚本,脚本支持传参,整合C程序
2014-04-02 CentosX64使用yum快速搭建xen虚拟化环境
2014-04-02 groupinfo
2014-04-02 linux进程,作业,守护进程,进程间同步