Python调用腾讯云短信接口

如今经过后台系统自动发短信的需求愈来愈多,主要用于验证码的发送或者项目监控异常时的报警提醒等等,因为以前有用到部分因此记录一下供之后使用。可是如今腾讯云的短信功能还在内测阶段,因此还有不少功能仍在Awaiting.html

首先固然是登陆腾讯云首页https://www.qcloud.com/product/sms.html点击“当即选购”后会跳出如下的页面:python

 

 因为是内测,因此点击“服务开通指南”,就会让你写封邮件给腾讯,把你的状况按照模板一五一十地balabala给他,json

而后腾讯审核完以后终于可使用这个功能了,好可贵= =,进入正题数组

建立一个短信应用(首先得有腾讯云帐号,而且有余额,由于发短信是要钱的),建立完后就能够获得这个应用的AppId和Appkey,在python脚本中会用到,同时还能够配置短信频率避免发的次数过多,毕竟4分钱一条嘛~app

而后再设置短信的签名以及模板,所谓签名就是相似于【腾讯科技】这种东西,可是注意这个并不能设置地特别高大上,由于要!审!核!,什么都要审核的,因此放dom

弃吧骚年,签名申请号之后就是正文:模板部分,包括固定部分和变量部分,其中变量部分是用{}括起来,引用时换成本身的变量便可。函数

待审核成功后就可使用python脚本调用模板了,因为有单发短信的Demo代码https://www.qcloud.com/doc/product/382/5804测试

 直接下载便可,群发的其实用个数组执行循环就能够达到效果,代码以下:url

#! /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至于其余功能之后等彻底推出了再慢慢使用吧。spa

相关文章
相关标签/搜索