轉載請注明原文地址: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'))
五:短信發送錯誤碼和回執狀態碼