現在通過后台系統自動發短信的需求越來越多,主要用於驗證碼的發送或者項目監控異常時的報警提醒等等,由於之前有用到部分所以記錄一下供以后使用。但是現在騰訊雲的短信功能還在內測階段,所以還有很多功能仍在Awaiting.
首先當然是登錄騰訊雲首頁https://www.qcloud.com/product/sms.html點擊“立即選購”后會跳出以下的頁面:
由於是內測,所以點擊“服務開通指南”,就會讓你寫封郵件給騰訊,把你的情況按照模板一五一十地balabala給他,
然后騰訊審核完之后終於可以使用這個功能了,好難得= =,進入正題
創建一個短信應用(首先得有騰訊雲賬號,並且有余額,因為發短信是要錢的),創建完后就可以得到這個應用的AppId和Appkey,在python腳本中會用到,同時還可以配置短信頻率避免發的次數過多,畢竟4分錢一條嘛~
然后再設置短信的簽名以及模板,所謂簽名就是類似於【騰訊科技】這種東西,但是注意這個並不能設置地特別高大上,因為要!審!核!,什么都要審核的,所以放
棄吧騷年,簽名申請號以后就是正文:模板部分,包括固定部分和變量部分,其中變量部分是用{}括起來,引用時換成自己的變量即可。
待審核成功后就可以使用python腳本調用模板了,由於有單發短信的Demo代碼https://www.qcloud.com/doc/product/382/5804
直接下載即可,群發的其實用個數組執行循環就可以達到效果,代碼如下:
#! /usr/bin/env python2 # encoding:utf-8 # python 2.7 測試通過 # python 3 更換適當的開發庫就能使用,在此我們不額外提供
import httplib import json import hashlib import random #定義發送短信的類
class SmsSender: sdkappid = 0 appkey = ""
# API發送短信的文檔
url = "https://yun.tim.qq.com/v3/tlssmssvr/sendsms"
#構造函數,把appid和appkey傳入
def __init__(self, sdkappid, appkey): self.sdkappid = sdkappid self.appkey = appkey #發短信的函數,傳入國家碼,手機號和內容
def sendMsg(self, nationCode, phoneNumber, content): #接口定義的appkey+phoneNumber的md5()變量
sig = hashlib.md5(self.appkey+phoneNumber).hexdigest() pkg = { "tel": { "nationcode": nationCode, "phone": phoneNumber }, "type": "0", "msg": content, "sig": sig, "extend": "", "ext":"123" } con = None try: con = httplib.HTTPSConnection('yun.tim.qq.com', timeout=10) body = json.dumps(pkg) rnd = random.randint(100000, 999999) wholeUrl = '%s?sdkappid=%d&random=%d' % (self.url, self.sdkappid, rnd) con.request('POST', wholeUrl, body) response = con.getresponse() print response.status,response.reason data = response.read() print data except Exception,e: print e finally: if(con): con.close() if __name__ == "__main__": # 開放者實際發送短信時請使用申請的 sdkappid 和 appkey
#定義3個變量
wxName='test1' wxPhone='test2' wxComment='test3'
#創建對象
sender = SmsSender(你的appid, "你的appkey") #要發送的手機號碼
phones = ["13833338888","13888883333"] for phone in phones: sender.sendMsg("86",phone,"昵稱:"+wxName+",電話:"+wxPhone+",評論:"+wxComment)
其中比較蛋疼的就是模板里的符號問題,建議最好都用中文或者英文,不然可能匹配不上,OK至於其他功能以后等完全推出了再慢慢使用吧。