标题
1.思路
1.创建一个utile
文件SmsTools.py
进行封装
from ronglian_sms_sdk import SmsSDK
import json, redis
from flask import current_app
class SmsTool():
"""
发送短信类
tid = '容联云通讯创建的模板ID'
mobile = '手机号1,手机号2'
datas = ('变量1', '变量2') 验证码,有效时间
"""
# 构造函数
def __init__(self):
accId = current_app.config.get("RL_ACC_ID")
accToken = current_app.config.get("RL_ACC_TOKEN")
appId = current_app.config.get("RL_APP_ID")
self.sdk = SmsSDK(accId, accToken, appId)
host = current_app.config.get('REDIS_HOST')
port = current_app.config.get('REDIS_PORT')
_db = current_app.config.get('REDIS_DB')
self.rds = redis.Redis(host=host, port=port, db=_db)
def send(self, phone, code):
"""
发送短信接口
:param phone: 手机号
:param code: 验证码
:return: Bool 发送成功开始失败
"""
# 发送短信类
t = current_app.config.get("SMS_TIME") # 有效期,从配置文件获取
tid = current_app.config.get("RL_TID")
# 把验证码存到数据库中
key = 'sms_%s' % phone
self.rds.set(key, code, ex=t * 60)
# 发送验证码
datas = (code, t)
rs = self.sdk.sendMessage(tid, phone, datas) # 返回的是json字符串
re_data = json.loads(rs) # 转换为字典
print(re_data)
if re_data["statusCode"] == "000000":
return True
return False
if __name__ == '__main__':
# 开启上下文环境
from app import app
with app.app_context():
s = SmsTool()
rs = s.send("17712959750", "6666")
print(rs)
蓝图
# 获取验证码
class SmsView(Resource):
def post(self):
# 获取参数
req = reqparse.RequestParser()
req.add_argument('phone', required=True)
# 校验参数
args = req.parse_args()
code = random.randint(100000, 999999)
# 发送验证码
s = SmsTool()
rs = s.send(args['phone'], code)
if rs:
return jsonify({
'code': 200,
'msg': '发送成功'
})
else:
return jsonify({
'code': 400,
'msg': '发送失败'
})