一、准備工作
1.安裝阿里雲SDK
pip install aliyun-python-sdk-core-v3
- 1
2.購買短信套餐
3.新建簽名並等待審核通過
審核通過后,記下**【簽名名稱】(參數1)**,程序中會用到。
4.新建短信模板並等待審核通過
審核通過后,記下**【模版CODE】(參數2)**,程序中會用到。
5.獲取ACCESS_KEY_ID
1)進入RAM訪問控制
點擊左上角的菜單欄(三個橫線的圖標);【產品與服務】-【監控管理】-【訪問控制】
2)新建用戶
【登錄名稱】、【顯示名稱】按規則輸入即可,勾選上【編程訪問】,點擊確定
再次點擊左側菜單欄【用戶】,頁面將刷新
點擊對應的【用戶登錄名稱/顯示名稱】,進入后可創建Access Key,並添加授權(需要的兩項授權如下圖所示),記下【ACCESS_KEY_ID】(參數3)、【ACCESS_KEY_SECRET】(參數4),等會會用到。
注:一定要授權
二、代碼
#!/usr/bin/env python # coding=utf-8 import uuid from aliyunsdkcore.client import AcsClient from aliyunsdkcore.profile import region_provider from aliyunsdkcore.request import RpcRequest # 注意:不要更改 REGION = "cn-hangzhou" PRODUCT_NAME = "Dysmsapi" DOMAIN = "dysmsapi.aliyuncs.com" # 注意:更改為自己的參數,參數從上面的教程找 sign_name = "參數1" # 短信簽名 template_code = "參數2" # 模板CODE ACCESS_KEY_ID = "參數3" # ACCESS_KEY_ID ACCESS_KEY_SECRET = "參數4" # ACCESS_KEY_ID acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION) region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN) class SendSmsRequest(RpcRequest): def __init__(self): RpcRequest.__init__(self, 'Dysmsapi', '2017-05-25', 'SendSms') def get_TemplateCode(self): return self.get_query_params().get('TemplateCode') def set_TemplateCode(self,TemplateCode): self.add_query_param('TemplateCode',TemplateCode) def get_PhoneNumbers(self): return self.get_query_params().get('PhoneNumbers') def set_PhoneNumbers(self,PhoneNumbers): self.add_query_param('PhoneNumbers',PhoneNumbers) def get_SignName(self): return self.get_query_params().get('SignName') def set_SignName(self,SignName): self.add_query_param('SignName',SignName) def get_ResourceOwnerAccount(self): return self.get_query_params().get('ResourceOwnerAccount') def set_ResourceOwnerAccount(self,ResourceOwnerAccount): self.add_query_param('ResourceOwnerAccount',ResourceOwnerAccount) def get_TemplateParam(self): return self.get_query_params().get('TemplateParam') def set_TemplateParam(self,TemplateParam): self.add_query_param('TemplateParam',TemplateParam) def get_ResourceOwnerId(self): return self.get_query_params().get('ResourceOwnerId') def set_ResourceOwnerId(self,ResourceOwnerId): self.add_query_param('ResourceOwnerId',ResourceOwnerId) def get_OwnerId(self): return self.get_query_params().get('OwnerId') def set_OwnerId(self,OwnerId): self.add_query_param('OwnerId',OwnerId) def get_SmsUpExtendCode(self): return self.get_query_params().get('SmsUpExtendCode') def set_SmsUpExtendCode(self,SmsUpExtendCode): self.add_query_param('SmsUpExtendCode',SmsUpExtendCode) def get_OutId(self): return self.get_query_params().get('OutId') def set_OutId(self,OutId): self.add_query_param('OutId',OutId) def send_sms(phone_numbers, template_param=None): business_id = uuid.uuid4() sms_request = SendSmsRequest() sms_request.set_TemplateCode(template_code) # 短信模板變量參數 if template_param is not None: sms_request.set_TemplateParam(template_param) sms_request.set_OutId(business_id) # 設置業務請求流水號,必填。 sms_request.set_SignName(sign_name) # 短信簽名 sms_request.set_PhoneNumbers(phone_numbers) # 短信發送的號碼列表,必填。 sms_response = acs_client.do_action_with_exception(sms_request) # 調用短信發送接口,返回json return sms_response if __name__ == "__main__": result = send_sms("需發送的手機號", "{'code':'需要發送的驗證碼'}") print(str(result, encoding='utf-8'))
三、運行及結果
短信發送成功!