教你用Python實(shí)現(xiàn)短信驗(yàn)證碼的發(fā)送
1. 短信API平臺(tái)
使用的短信API平臺(tái)為:容聯(lián)云(https://www.yuntongxun.com/)
開發(fā)者文檔:http://doc.yuntongxun.com/pe/5a531a353b8496dd00dcdfe2
2. 使用官方提供的SDK實(shí)現(xiàn)短信發(fā)送
2.1 安裝SDK
pip install ronglian-sms-sdk -i https://pypi.tuna.tsinghua.edu.cn/simple
2.2 使用官方的測(cè)試用例進(jìn)行測(cè)試
from ronglian_sms_sdk import SmsSDK # accId = '容聯(lián)云通訊分配的主賬號(hào)ID' accId = '...' # accToken = '容聯(lián)云通訊分配的主賬號(hào)TOKEN' accToken = '...' # appId = '容聯(lián)云通訊分配的應(yīng)用ID' appId = '...' # 發(fā)送短信驗(yàn)證碼 def send_message(): # 初始化獲取發(fā)送短信的對(duì)象 sdk = SmsSDK(accId, accToken, appId) # tid = '容聯(lián)云通訊平臺(tái)創(chuàng)建的模板' 默認(rèn)模板的編號(hào)為1 tid = '1' # tid的數(shù)據(jù)類型為str # mobile = '手機(jī)號(hào)1,手機(jī)號(hào)2' 多個(gè)手機(jī)號(hào)在字符串中使用 , 進(jìn)行分隔 mobile = '...' # 第一個(gè)參數(shù)為驗(yàn)證碼 第二個(gè)參數(shù)為驗(yàn)證碼的有效時(shí)間(對(duì)于短信模板1) datas = ('123456', 5) # 發(fā)送短信并接收返回結(jié)果 resp = sdk.sendMessage(tid, mobile, datas) print(resp) # 測(cè)試 if __name__ == '__main__': send_message()
返回的結(jié)果為json類型的字符串。
2.3 參數(shù)及其參數(shù)的查看
初始化方法
調(diào)用發(fā)送短信方法
短信模板:
默認(rèn)短信模板的tid為1
至于其他的模板
發(fā)送手機(jī)號(hào):
如果沒有認(rèn)證,測(cè)試環(huán)境下需要設(shè)置短信能夠發(fā)送的測(cè)試手機(jī)號(hào)
響應(yīng)參數(shù)
返回的為json類型的字符串
3. 單例模式實(shí)現(xiàn)短信發(fā)送
由于每次要發(fā)送短信都需要向?qū)嵗粋€(gè)對(duì)象,當(dāng)發(fā)送短信的并發(fā)數(shù)太大時(shí),會(huì)對(duì)內(nèi)存造成較大的壓力,所以修改為采用單例模式實(shí)現(xiàn)。
from ronglian_sms_sdk import SmsSDK import json # accId = '容聯(lián)云通訊分配的主賬號(hào)ID' accId = '...' # accToken = '容聯(lián)云通訊分配的主賬號(hào)TOKEN' accToken = '...' # appId = '容聯(lián)云通訊分配的應(yīng)用ID' appId = '...' class SendSmsVerificationCode: """發(fā)送短信驗(yàn)證碼的單例類""" def __new__(cls, *args, **kwargs): """ 發(fā)送短信驗(yàn)證碼單例類的初始化方法 :return: 返回一個(gè)發(fā)送短信驗(yàn)證碼的對(duì)象 """ # 判斷類中發(fā)送短信驗(yàn)證碼的對(duì)象 _instance 是否已經(jīng)存在 # 如果不存在, 創(chuàng)建一個(gè)發(fā)送短信驗(yàn)證碼的對(duì)象, 并將其作為類屬性 if not hasattr(cls, '_instance'): # 創(chuàng)建發(fā)送短信驗(yàn)證碼的對(duì)象 cls._instance = super(SendSmsVerificationCode, cls).__new__(cls, *args, **kwargs) # 創(chuàng)建SmsSDK對(duì)象作為 _instance 的對(duì)象屬性 cls._instance.sdk = SmsSDK(accId, accToken, appId) # 如果存在, 返回發(fā)送短信驗(yàn)證碼的對(duì)象 return cls._instance def send_message(self, mobile, datas, tid='1'): """ 發(fā)送短信的方法 @params mobile 字符串類型 mobile = '手機(jī)號(hào)1,手機(jī)號(hào)2' @params tid tid = '容聯(lián)云通訊平臺(tái)創(chuàng)建的模板' 默認(rèn)模板的編號(hào)為1 @params datas 元組類型 第一個(gè)參數(shù)為驗(yàn)證碼 第二個(gè)參數(shù)為驗(yàn)證碼的有效時(shí)間(對(duì)于短信模板1) :return: 返回發(fā)送短信后的響應(yīng)參數(shù) """ # 發(fā)送短信 resp = self.sdk.sendMessage(tid, mobile, datas) print(json.loads(resp), type(json.loads(resp))) return resp # 測(cè)試 if __name__ == '__main__': sendSmsVerificationCode1 = SendSmsVerificationCode() sendSmsVerificationCode2 = SendSmsVerificationCode() sendSmsVerificationCode3 = SendSmsVerificationCode() print(sendSmsVerificationCode1) print(sendSmsVerificationCode2) print(sendSmsVerificationCode3) res = sendSmsVerificationCode1.send_message('...', ('123456', 5), '1') print(res)
總結(jié)
到此這篇關(guān)于用Python實(shí)現(xiàn)短信驗(yàn)證碼發(fā)送的文章就介紹到這了,更多相關(guān)Python短信驗(yàn)證碼發(fā)送內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
可視化pytorch 模型中不同BN層的running mean曲線實(shí)例
這篇文章主要介紹了可視化pytorch 模型中不同BN層的running mean曲線實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python小紅書旋轉(zhuǎn)驗(yàn)證碼識(shí)別實(shí)戰(zhàn)教程
這篇文章主要介紹了Python小紅書旋轉(zhuǎn)驗(yàn)證碼識(shí)別實(shí)戰(zhàn)教程,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-08-08python用win32gui遍歷窗口并設(shè)置窗口位置的方法
今天小編就為大家分享一篇python用win32gui遍歷窗口并設(shè)置窗口位置的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07numpy中實(shí)現(xiàn)ndarray數(shù)組返回符合特定條件的索引方法
下面小編就為大家分享一篇numpy中實(shí)現(xiàn)ndarray數(shù)組返回符合特定條件的索引方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04Linux安裝Python3如何和系統(tǒng)自帶的Python2并存
這篇文章主要介紹了Linux安裝Python3如何和系統(tǒng)自帶的Python2并存,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07