下列代碼都是以自己的項目實例講述的,相關的文本內容很少,主要說明全在代碼注釋中。
我是使用阿里云云通信的短信服務,第一次使用會摸不著頭緒,這里我們需要做些準備工作:
1、登陸自己的賬號進入阿里云官網,沒有賬號的朋友們自行注冊
2、在導航欄上搜索“短信服務”,沒有添加的話應該會有“免費開通”按鈕,再進入管理控制臺(我們需要添加這個短信服務板塊,這樣控制臺會有短信服務這個模塊),管理控制臺的頁面:
3、添加api密鑰,成功之后會自行生成一個入口api密鑰 id 和 secret。
4、在第一張圖片上點擊“添加簽名”和“添加模板”,添加完相關信息,需要相關人員審核。添加模板時需要注意:
5、寫完所有的步驟,記得充值,沖個5塊錢應該夠了吧(反正是測試用的)
6、準備工作做完,現在接下來的都是復制粘貼代碼了(python3的朋友需要:pip install aliyun-python-sdk-core-v3` python2的朋友:pip install aliyun-python-sdk-core)
7、發送短信api接口配置
from aliyunsdkcore.client importAcsClientfrom aliyunsdkcore.request importCommonRequestclassAlidayu(object):"""api接口的初始化操作
accessKeyId: api密鑰的入口id
accessSecret: api密鑰的入口密碼
regionId: 一般是你云服務器的地區
以上三個參數必不可少,封裝成客戶端實例
發送配置(都是固定的配置)分別是發送短信的格式、域名、方式、協議、版本"""
def __init__(self):
self.accessKeyId= "你的密鑰入口id"self.accessSecret= "你的密鑰入口secret"self.regionId= "cn-shanghai" #一般是上海或者杭州
self.client =AcsClient(self.accessKeyId, self.accessSecret, self.regionId)#發送配置(都是固定的配置)
self.comRequest =CommonRequest()
self.comRequest.set_accept_format("json")
self.comRequest.set_domain("dysmsapi.aliyuncs.com")
self.comRequest.set_method("POST")
self.comRequest.set_protocol_type("https")
self.comRequest.set_version("2017-05-25")defsend_sms(self, telephone, code):"""發送配置定義好,現在就是發送信息(驗證碼)
發送信息之前的四個參數也是必不可少的:
手機號碼、短信簽名名稱、短信模板CODE、短信模板的內容參數值
最后通過客戶發送即可
:param telephone: 手機號碼
:param code: 隨機驗證碼
:return:"""self.comRequest.set_action_name("SendSms")
self.comRequest.add_query_param("PhoneNumbers", "你的手機號碼")
self.comRequest.add_query_param("SignName", "你的短信簽名名稱")
self.comRequest.add_query_param("TemplateCode", "你的模板CODE")#這個是你配置的短信模板的內容里的參數名稱,變量名一定要一樣
self.comRequest.add_query_param("TemplateParam", "{\"code\":\"%s\"}" %code)
response=self.client.do_action(self.comRequest)print(response)return response
8、編寫一個視圖函數,通過url訪問就可以了
@bp.route("/sms_captcha")defsms_captcha():
telephone= request.args.get("telephone")if nottelephone:return restful.params_error(message="請輸入手機號碼")#借用圖形驗證碼類中的獲取隨機驗證碼的方法
captcha = Captcha.gene_text(numbers=4).replace(" ", "")#上面的代碼你可以刪掉,把telephone換成具體的手機號碼,captcha換成具體的驗證碼值
alidayu =Alidayu()ifalidayu.send_sms(telephone, captcha):#可以print打印一下驗證
returnrestful.success()else:return restful.params_error(message="驗證碼發送失敗!")
原文:https://www.cnblogs.com/aitiknowledge/p/11669114.html