阿里云短信调用方法,超详细,无差错

阿里云短信调用方法

环境准备

1.首先需要一个RAM账号,您需要一个RAM账号以及一对AccessKey ID和AccessKey Secret,请在阿里云控制台中的AccessKey管理页面上创建和查看您的AccessKey,或联系您的系统管理员。
2.使用阿里云SDK调用某个产品的API前,确保您已经在阿里云控制台开通了该产品。

阿里云短信应用链接https://dysms.console.aliyun.com/

图片新标签页打开会很清晰

安装阿里云 Python SDK

安装SDK核心库

1.如果您使用Python 2.x,执行以下命令,安装阿里云SDK核心库:

pip install aliyun-python-sdk-core

2.如果您使用Python 3.x,执行以下命令,安装阿里云SDK核心库:

pip install aliyun-python-sdk-core-v3

安装云产品的SDK

pip install aliyun-python-sdk-ecs

使用Python SDK

1.创建Client实例。在创建Client实例时,您需要获取Region ID、AccessKey ID和AccessKey Secret

2.创建request对象并添加属性

3.发起请求并处理应答或异常。

# !/usr/bin/env python
# coding=utf-8
# !/usr/bin/env python
# coding=utf-8

# 我把AccessKey ID和AccessKey Secret存到配置文件中了(防止明文被看到)
from luffyapi.settings.dev import ACCESSKEYID, ACCESSSECRET

# 导入所需模块,再次之前我们都已经pip install好了的
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest

# 这三个参数即 AccessKey ID, AccessKey Secret, 地区的id,关于地区id怎么获得我会贴在文章最下方
client = AcsClient(ACCESSKEYID, ACCESSSECRET, "cn-shanghai")

# 下面就是一些规定的配置,复制即可
request = CommonRequest()
request.set_accept_format("json")
request.set_domain("dysmsapi.aliyuncs.com")
request.set_method("POST")
request.set_protocol_type("https")  # https | http
request.set_version("2017-05-25")
request.set_action_name("SendSms")

# 配置地区id  地区id即为 cn_%s % (所在的地区名,应该是可以细分到市级的,如cn_hangzhou)
request.add_query_param("RegionId", "cn-shanghai")
# 配置要发送的手机号码
request.add_query_param("PhoneNumbers", "1881****052")
# 配置你所设置的信息模板code,文章下方我会贴出来在哪边可以设置信息模板
request.add_query_param("TemplateCode", "SMS_171117099")
# 这个TemplateParam参数是给信息模板中的变量传值的,正常使用应该是后端获取验证码然后塞到这个参数中的
request.add_query_param("TemplateParam", {"code": "456123"})
# 这是配置签名的          
request.add_query_param("SignName", "输诚一")

response = client.do_action(request)   # 调用发送短信方法

print(str(response, encoding='utf-8'))  # 可以打印出返回值,继而可以看到短信发送状态,正常如果成功了会显示:{"Message":"账户余额不足","RequestId":"07E5BFA8-7E61-4878-BCFC-A7F5D857AB9F","Code":"isv.AMOUNT_NOT_ENOUGH"}, 因为我们没充钱呀!

补充

添加签名

添加短信模板

# 上图中如果模板内容中设置了变量的话,就需要配置:

# 这个TemplateParam参数是给信息模板中的变量传值的,正常使用应该是后端获取验证码然后塞到这个参数中的
request.add_query_param("TemplateParam", {"code": "456123"})
# 这个后面的 参数必须要是一个符合json格式的字典作为参数, 字典的key必须要与模板内容中(${code})中变量的值一模一样("code"),照理说可以设置多个变量,但是我无法DIY模板内容,只是作为测试,测试成功了即可,要投入使用就要花钱买信息量了。

# 这段代码在上面可以找到,一看便知

帮到你的话可以点个赞/关注一下/支持一下~

posted @ 2019-07-20 16:57  输诚  阅读(4023)  评论(0编辑  收藏  举报