Python基于Twilio及騰訊云實(shí)現(xiàn)國際國內(nèi)短信接口
短信服務(wù)驗(yàn)證服務(wù)已經(jīng)不是什么新鮮事了,但是免費(fèi)的手機(jī)短信服務(wù)卻不多見,本次利用Python3.0基于Twilio和騰訊云服務(wù)分別來體驗(yàn)一下國際短信和國內(nèi)短信接口。
首先,注冊Twilio: www.twilio.com/
注冊成功后,獲取ACCOUNT SID和AUTH TOKEN,一會要用到
安裝依賴的庫
pip3 install twilio
隨后編寫發(fā)送腳本
#導(dǎo)包 導(dǎo)入客戶端 from twilio.rest import Client #定義短信sid account_sid = '你的sid' #定義秘鑰 auth_token = '你的秘鑰' #定義客戶端對象 client = Client(account_sid,auth_token) message = client.messages.create( to="+8613423432818", # 接受短信的手機(jī)號,也就是注冊界面驗(yàn)證過的那個自己的手機(jī)號,注意 寫中國區(qū)號 +86 from_="+12118627871", # 發(fā)送短信的美國手機(jī)號 區(qū)號 +1 body="Hello from Python!") #打印發(fā)送結(jié)果 print(message)
整個過程比較簡單,如此你就擁有了一個免費(fèi)的國際手機(jī)短信服務(wù)接口,注意發(fā)送的手機(jī)號要填寫手機(jī)號的國家區(qū)號,另外twilio的額度也并非無限,將會有一個10刀的額度,每發(fā)一條將會扣除1美分,所以測試的時候悠著點(diǎn),別超過額度限制。
國內(nèi)短信業(yè)務(wù)這塊兒做的比較好的有阿里云,騰訊云,和百度云,另外七牛云和又拍云也有相應(yīng)的服務(wù),為什么一定要選擇騰訊云呢?其實(shí)很簡單,因?yàn)橛忻赓M(fèi)的100條短信可以用。
首先注冊騰訊云服務(wù): cloud.tencent.com
注冊成功后,騰訊云會自動生成一個短信應(yīng)用,如果沒有默認(rèn)應(yīng)用,需要新建一下
記錄一下應(yīng)用的 appid 以及 appkey 一會要用到
之后配置短信的簽名,簽名顧名思義,用來限制短信接口的權(quán)限,防止被惡意調(diào)用,同時簽名需要騰訊客服人工審核,大概需要兩個小時左右。
這里推薦使用小程序來做簽名類型,同時簽名內(nèi)容是自定義的,證明類型很簡單,只需要去微信小程序后臺界面截個圖即可。
配置好簽名,還需要配置一下短信模板,模板的含義也很簡單,就是給用戶發(fā)送的短信內(nèi)容
模板中的{}符號是類似通配符的東西,發(fā)送短信時用變量進(jìn)行替換,注意表明索引數(shù)量,模板也需要騰訊客服人工審核,大概需要兩個小時左右。另外短信長度最好不要超過70字,超過以后長短信就會按每67字一條來計(jì)算,那就虧大發(fā)了。
以上就是前期的配置,下面安裝騰訊云短信的sdk
pip3 install qcloudsms_py
編寫發(fā)送腳本
# 短信應(yīng)用SDK AppID appid = 你的appid # SDK AppID是1400開頭 # 短信應(yīng)用SDK AppKey appkey = "你的appkey" # 需要發(fā)送短信的手機(jī)號碼 phone_numbers = ["你要發(fā)送的手機(jī)號"] # 短信模板ID,需要在短信應(yīng)用中申請 template_id = 在模板列表里獲取 # 簽名 sms_sign = "劉悅的技術(shù)博客" from qcloudsms_py import SmsSingleSender from qcloudsms_py.httpclient import HTTPError import ssl ssl._create_default_https_context = ssl._create_unverified_context ssender = SmsSingleSender(appid, appkey) params = ["6666","5"] # 當(dāng)模板沒有參數(shù)時,`params = []` try: result = ssender.send_with_param(86, phone_numbers[0], template_id, params, sign=sms_sign, extend="", ext="") # 簽名參數(shù)不允許為空串 print(result) except HTTPError as e: print(e) except Exception as e: print(e)
整個流程沒什么難度,需要注意一點(diǎn)這里為了避免ssl證書的問題需要導(dǎo)入ssl庫單獨(dú)設(shè)置一下,最后查看一下結(jié)果
同時騰訊云服務(wù)短信比Twilio體驗(yàn)好的一點(diǎn)在于它具有詳細(xì)的統(tǒng)計(jì)后臺,方便我們對短信到達(dá)率進(jìn)行監(jiān)控和統(tǒng)計(jì),對海量用戶的群發(fā)也比較友好。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于opencv的selenium滑動驗(yàn)證碼的實(shí)現(xiàn)
這篇文章主要介紹了基于opencv的selenium滑動驗(yàn)證碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07python腳本監(jiān)控logstash進(jìn)程并郵件告警實(shí)例
這篇文章主要介紹了python腳本監(jiān)控logstash進(jìn)程并郵件告警實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04使用Python將字符串轉(zhuǎn)換為格式化的日期時間字符串
這篇文章主要介紹了使用Python將字符串轉(zhuǎn)換為格式化的日期時間字符串,需要的朋友可以參考下2019-09-09Python中通過property設(shè)置類屬性的訪問
為了達(dá)到類似C++類的封裝性能,可以使用property來設(shè)置Python類屬性的訪問權(quán)限,本文就介紹一下Python中通過property設(shè)置類屬性的訪問,感興趣的可以了解一下,感興趣的可以了解一下2023-09-09git查看、創(chuàng)建、刪除、本地、遠(yuǎn)程分支方法詳解
這篇文章主要介紹了git查看、創(chuàng)建、刪除、本地、遠(yuǎn)程分支方法詳解,需要的朋友可以參考下2020-02-02