我正在参加「掘金·启航计划」
python发送阿里云短信教程
1、开通云短信
注册阿里云,开通短信服务。
2、快速学习
进入控制台后,点击左边的快速学习,申请签名,申请模板
签名与模板的生成需要审核,需等待,注意签名与模板作用范围要一致。
2.1、添加签名
添加签名,如果是验证码就选验证码,如果是自己定义模板,则选择通用:
注:签名名称
在代码中会使用到。
2.2、添加模板
如果是通用,则要设置好变量
比如我的:
在代码中需要一一匹配这些变量。
申请成功后可以在模板管理里面查看:国内消息->模板管理:
注:模板CODE在代码中会使用到。
3、获取密钥
阿里云需要ACCESSKEY_ID与 ACCESSKEY_SECRET才能通过身份验证发送短信。
点击进入管理控制台后,进入概览,在右侧四个方框最右侧AccessKey:
点击右侧-->创建AccessKey,生成新的AK和SK,或使用已存在AK和SK,然后复制密钥:
4、安装第三方库
在本地虚拟环境中安装适合python的阿里云短信库:
pip install aliyun-python-sdk-core-v3
5、示例代码
代码如下:
def software_sms_short(params):
# TODO 阿里云发送短信
# pip install aliyun-python-sdk-core-v3
'''
模板内容
光纤振动告警:
时间:${time_d} 位置:${address} 类型:${type_name} 设备:${device} 线路:${channel}
:param phone:
:param start_time:
:param address:
:param type_name:
:return:
'''
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
data = {
"time_d": params['start_time'],
'address': params['address'],
'type_name': params['alarm_type'],
'device': params['device_name'],
'channel': params['channel_code'],
}
try:
client = AcsClient(settings.ACCESSKEY_ID, settings.ACCESSKEY_SECRET, 'cn-hangzhou')
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')
request.add_query_param('RegionId', "cn-hangzhou")
request.add_query_param('PhoneNumbers', params['phone']) # 手机号
request.add_query_param('SignName', params['sign_name']) # 签名名称
request.add_query_param('TemplateCode', params['template_code']) # 模板code
request.add_query_param('TemplateParam', data) #
response_b = client.do_action_with_exception(request)
response_dict = eval(response_b.decode('utf-8'))
# print(str(response, encoding='utf-8'))
print('短信发送成功', response_dict)
if response_dict['Code'] == 'OK':
return True
except Exception as e:
msg = '短信发送出错, {}'.format(e)
print(msg)
return False