python 阿里云短信群发推送
本篇文章是使用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接口发送短信
python 阿里云短信群发推送的更多相关文章
- python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口
!/usr/bin/python #encoding=utf-8 #Author:Ruiy #//////////////////////////////////////////////////// ...
- Python实现阿里云短信推送
本篇文章是使用Python的Web框架Django提供发送短信接口供前端调用,Python版本2.7 阿里云入驻.申请短信服务.创建应用和模板等步骤请参考:阿里云短信服务入门 1.下载sdk 阿里云短 ...
- 阿里云短信服务调用例子-Python
阿里云短信服务调用例子 阿里云官方文档https://helpcdn.aliyun.com/document_detail/101893.html 首先需要安装阿里云PythonSDK(下面是pyth ...
- PHP控制阿里云短信API接口实现短信群发功能
阿里云短信支持先使用后支付的原则,价格为4分半1条. 通过SDK可以与网站功能的绑定,实现响应的短信发送功能 现已统一合并升级为:消息服务. 消息服务 阿里云消息服务(Message Service, ...
- ThinkPHP5.0手把手实现手机阿里云短信验证
阿里云短信服务介绍阿里云短信服务就是以前的阿里大于,不过现在融合得到阿里云平台了.首先,你需要注册一个阿里云账号,这个自行解决. 仅用于测试使用官方送的代金券够用了.相关配置1.开通阿里云Access ...
- zabbix短信(阿里云短信平台)与邮件报警
环境说明 操作系统 centos7 zabbix_server zabbix 4.0.3 python 3.6.5 短信平台 阿里云短信 zabbix_server配置信息 1 [root@cp-hb ...
- 移动端获取短信验证码java实现——阿里云短信服务
需求:移动端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短信 ...
- 浏览器端获取短信验证码java实现——阿里云短信服务
需求:浏览器端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短 ...
- flask+阿里云短信服务实现注册发送手机验证码
效果图: 该效果主要讲解实现通过调用阿里云的SDK实现发送注册验证码短信(阿里云短信付费使用) 购买阿里云短信服务 购买链接:https://www.aliyun.com/product/sms 1. ...
随机推荐
- UTF-8里包括GB2312
用最易懂的说法就是UTF-8里包括GB2312.UTF-8是国际通用的标准(包括世界所有的语言),而GB2312(只是简体中文)只适合做中文的网站. 假设你想做个中文网页,但是还可以翻成英文的话,就得 ...
- docker 安装mysql mongo
Docker安装Mysql 1.拉取镜像 docker pull mysql/mysql-server 2.运行mysql docker run -d -p : --name [Name] [Imag ...
- Vue.js图片预览插件
vue-picture-preview-extend vue-picture-preview的扩展版本,本文中插件是由其他大神开发,我做了一些扩展,原文链接:https://segmentfault. ...
- OSI七层与tcp/ip四层
1)OSI七层模型 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化,代 ...
- FindBugs插件的安装与使用
转载:http://www.cnblogs.com/kayfans/archive/2012/06/18/2554022.html 1 什么是FindBugs FindBugs 是一个静态分析工具,它 ...
- HP-UX 下用户被锁
/usr/lbin/getprpw -m lockout root 如果返回lockout=0000000 该帐号是非锁定的,如果是其它的如:lockout=0001000则表示该帐号被锁定 如果是测 ...
- 谈一谈手机WebApp的fixed属性(手机上的固定栏)【转】
1.iphone/android原生app常见结构 似乎,所有的手机应用,都遵循这样的布局:固定的顶部+固定的底部+可滚动在中间区域.这种“雷同”的模式让人恶心,却不得不承认这是一种很规矩却又很实用的 ...
- Nginx实践03-配置虚拟主机的3种方式
基于IP.端口号.名称3种方式 1.基于IP的虚拟主机配置(使用最少) 基于ip的虚拟主机配置,需要配置单个网卡上多个ip地址,这种方式管理比较麻烦,所以用的很少. 1.1 设置单个网卡多个IP 查看 ...
- c# sqlbulkcopy批量插入数据
dt信息中包含数据和表名 public static void SqlBulkInsert(DataTable dt, string connStr) { try { using (var conn ...
- query更多的筛选用法
比较操作符$eq : = 写法:db.class0.find({age:{$eq:18}},{name:1,_id:0}); 查找年龄等于18$lt :<$lte : <=$gt : & ...