教你用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 使用官方的測試用例進(jìn)行測試
from ronglian_sms_sdk import SmsSDK
# accId = '容聯(lián)云通訊分配的主賬號ID'
accId = '...'
# accToken = '容聯(lián)云通訊分配的主賬號TOKEN'
accToken = '...'
# appId = '容聯(lián)云通訊分配的應(yīng)用ID'
appId = '...'
# 發(fā)送短信驗(yàn)證碼
def send_message():
# 初始化獲取發(fā)送短信的對象
sdk = SmsSDK(accId, accToken, appId)
# tid = '容聯(lián)云通訊平臺(tái)創(chuàng)建的模板' 默認(rèn)模板的編號為1
tid = '1' # tid的數(shù)據(jù)類型為str
# mobile = '手機(jī)號1,手機(jī)號2' 多個(gè)手機(jī)號在字符串中使用 , 進(jìn)行分隔
mobile = '...'
# 第一個(gè)參數(shù)為驗(yàn)證碼 第二個(gè)參數(shù)為驗(yàn)證碼的有效時(shí)間(對于短信模板1)
datas = ('123456', 5)
# 發(fā)送短信并接收返回結(jié)果
resp = sdk.sendMessage(tid, mobile, datas)
print(resp)
# 測試
if __name__ == '__main__':
send_message()
返回的結(jié)果為json類型的字符串。


2.3 參數(shù)及其參數(shù)的查看
初始化方法


調(diào)用發(fā)送短信方法

短信模板:
默認(rèn)短信模板的tid為1
至于其他的模板
發(fā)送手機(jī)號:
如果沒有認(rèn)證,測試環(huán)境下需要設(shè)置短信能夠發(fā)送的測試手機(jī)號

響應(yīng)參數(shù)
返回的為json類型的字符串

3. 單例模式實(shí)現(xiàn)短信發(fā)送
由于每次要發(fā)送短信都需要向?qū)嵗粋€(gè)對象,當(dāng)發(fā)送短信的并發(fā)數(shù)太大時(shí),會(huì)對內(nèi)存造成較大的壓力,所以修改為采用單例模式實(shí)現(xiàn)。
from ronglian_sms_sdk import SmsSDK
import json
# accId = '容聯(lián)云通訊分配的主賬號ID'
accId = '...'
# accToken = '容聯(lián)云通訊分配的主賬號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)證碼的對象
"""
# 判斷類中發(fā)送短信驗(yàn)證碼的對象 _instance 是否已經(jīng)存在
# 如果不存在, 創(chuàng)建一個(gè)發(fā)送短信驗(yàn)證碼的對象, 并將其作為類屬性
if not hasattr(cls, '_instance'):
# 創(chuàng)建發(fā)送短信驗(yàn)證碼的對象
cls._instance = super(SendSmsVerificationCode, cls).__new__(cls, *args, **kwargs)
# 創(chuàng)建SmsSDK對象作為 _instance 的對象屬性
cls._instance.sdk = SmsSDK(accId, accToken, appId)
# 如果存在, 返回發(fā)送短信驗(yàn)證碼的對象
return cls._instance
def send_message(self, mobile, datas, tid='1'):
"""
發(fā)送短信的方法
@params mobile 字符串類型 mobile = '手機(jī)號1,手機(jī)號2'
@params tid tid = '容聯(lián)云通訊平臺(tái)創(chuàng)建的模板' 默認(rèn)模板的編號為1
@params datas 元組類型 第一個(gè)參數(shù)為驗(yàn)證碼 第二個(gè)參數(shù)為驗(yàn)證碼的有效時(shí)間(對于短信模板1)
:return: 返回發(fā)送短信后的響應(yīng)參數(shù)
"""
# 發(fā)送短信
resp = self.sdk.sendMessage(tid, mobile, datas)
print(json.loads(resp), type(json.loads(resp)))
return resp
# 測試
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python爬取微信公眾號文章圖片并轉(zhuǎn)為PDF
大家好,本篇文章主要講的是python爬取微信公眾號文章圖片并轉(zhuǎn)為PDF,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-02-02
解析Python 偏函數(shù)用法全方位實(shí)現(xiàn)
這篇文章主要介紹了解析Python 偏函數(shù)用法全方位實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Python時(shí)間處理模塊Time和DateTime
這篇文章主要為大家介紹了Python時(shí)間處理模塊Time和DateTime使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
詳解pycharm連接不上mysql數(shù)據(jù)庫的解決辦法
這篇文章主要介紹了詳解pycharm連接不上mysql數(shù)據(jù)庫的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
利用Python小工具實(shí)現(xiàn)3秒鐘將視頻轉(zhuǎn)換為音頻
這篇文章主要介紹了利用Python小工具實(shí)現(xiàn) 3秒鐘將視頻轉(zhuǎn)換為音頻效果,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
python用opencv將標(biāo)注提取畫框到對應(yīng)的圖像中
這篇文章主要介紹了python用opencv將標(biāo)注提取畫框到對應(yīng)的圖像中,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
python密碼學(xué)一次性密碼的實(shí)現(xiàn)
這篇文章主要為大家介紹了python密碼學(xué)一次性密碼的實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python內(nèi)置函數(shù)issubclass()的具體使用
issubclass()是Python中一個(gè)非常有用的內(nèi)置函數(shù),它提供了一種簡單的方式來檢查類的繼承關(guān)系,本文主要介紹了Python內(nèi)置函數(shù)issubclass()的具體使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2007-03-03


