轉載請注明原文地址:https://www.cnblogs.com/ygj0930/p/10825951.html
一:阿里雲短信服務注冊
1:開通短信業務:實名認證的個人用戶是免費開通;企業用戶需要提供三證(營業執照、組織機構代碼證、稅務登記證)

2:創建用戶,生成AccessKey,記得下載並保存起來。只有在創建的時候可以下載!

3:為用戶授權


4:創建簽名和短信模版,一般兩小時內就可以審核通過

二:SDK下載
下載地址:https://help.aliyun.com/document_detail/55359.html
三:要用到的文件
1)api_sdk/aliyun-python-sdk-core/aliyunsdkcore
2)api_sdk/aliyun-python-sdk-dysmsapi/aliyunsdkdysmsapi
把aliyunsdkcore和aliyunsdkdysmsapi拷貝到項目中,然后在同級目錄下,新建 aliyun_sms.py文件,在里面定義短信發送和短信查詢的方法:
# -*- coding: utf-8 -*-
import sys
from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClient
import uuid
import json
"""
短信業務調用接口
"""
reload(sys)
sys.setdefaultencoding('utf8')
#不要更改
REGION = "cn-hangzhou"
# ACCESS_KEY_ID/ACCESS_KEY_SECRET 根據實際申請的賬號信息進行替換
ACCESS_KEY_ID = "你創建的RAM用戶的ACCESS_KEY_ID"
ACCESS_KEY_SECRET = "你創建的RAM用戶的ACCESS_KEY_SECRET"
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
class AliSMS(object):
#發送短信
def send_sms(self, business_id, phone_numbers, sign_name, template_code, template_param=None):
smsRequest = SendSmsRequest.SendSmsRequest()
#1:設置短信模板編碼
smsRequest.set_TemplateCode(template_code)
#2:傳遞短信模板變量參數 {"code":"值"}
if template_param is not None:
smsRequest.set_TemplateParam(template_param)
#3:設置業務請求流水號,必填。
smsRequest.set_OutId(business_id)
#4:設置短信簽名
smsRequest.set_SignName(sign_name);
#5:設置短信發送的號碼列表(一個就是單發,數組就是群發)
smsRequest.set_PhoneNumbers(phone_numbers)
#6:調用短信發送接口,獲得返回json響應數據
smsResponse = json.loads(acs_client.do_action_with_exception(smsRequest))
return smsResponse
#查詢短信
def query_send_detail(self, biz_id, phone_number, page_size, current_page, send_date):
queryRequest = QuerySendDetailsRequest.QuerySendDetailsRequest()
# 查詢的手機號碼
queryRequest.set_PhoneNumber(phone_number)
# 流水號
# queryRequest.set_BizId(biz_id)
# 發送日期 支持30天內記錄查詢,格式yyyyMMdd
queryRequest.set_SendDate(send_date)
# 必填-當前頁碼從1開始計數
queryRequest.set_CurrentPage(current_page)
# 必填-頁大小
queryRequest.set_PageSize(page_size)
# 調用短信記錄查詢接口,返回json
queryResponse = json.loads(acs_client.do_action_with_exception(queryRequest))
return queryResponse
四:調用示例
# -*- coding: utf-8 -*-
from Ali_sms import *
class TestSMS(object):
ali_sms = AliSMS()
if __name__ == '__main__':
__business_id = uuid.uuid1()
params = "{\"code\":\"2222\"}"
response = ali_sms.send_sms(__business_id, "電話", "簽名Name", "模版ID", params)
BizId = response["BizId"]
detail = ali_sms.query_send_detail(BizId, "電話", 10, 1,datetime.datetime.now().strftime('%Y%m%d'))
五:短信發送錯誤碼和回執狀態碼
