您的位置:首页 > 编程语言 > Python开发

Python实现阿里云短信推送

2018-03-04 17:49 1696 查看
本篇文章是使用Python的Web框架Django提供发送短信接口供前端调用,Python版本2.7

阿里云入驻、申请短信服务、创建应用和模板等步骤请参考:阿里云短信服务入门

1、下载sdk

阿里云短信服务Python 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接口发送短信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: