阿里大于短信平台:https://dysms.console.aliyun.com/dysms.htm#/overview
使用教程:https://blog.csdn.net/qq1031893936/article/details/81173878
控制台-->短信服务
进去后开通服务,点击添加签名
根据自己的情况设置
审核通过后,添加模板
添加对应的内容
需要用到的两个数据:签名名称、模板CODE
创建AccessKey
实现调接口发验证码:由于使用这个验证码需要购买套餐,所以这里就只封装发短信的模块就行
# 阿里大于相关配置ALIDAYU_APP_KEY = 'LTAI4FmvBxyEb5Sip5b4PbZo' # AccessKeyALIDAYU_APP_SECRET = '25zBQkqQNXjzwVDHH4m2I6qyoZlxOp' # AccessKeySecretALIDAYU_SIGN_NAME = 'cms' # 签名名称ALIDAYU_TEMPLATE_CODE = 'SMS_178771780' # 模板id
# 阿里大于短信验证码sdkimport hashlibfrom time import timeimport loggingimport requestsclass AlidayuAPI(object): APP_KEY_FIELD = 'ALIDAYU_APP_KEY' APP_SECRET_FIELD = 'ALIDAYU_APP_SECRET' SMS_SIGN_NAME_FIELD = 'ALIDAYU_SIGN_NAME' SMS_TEMPLATE_CODE_FIELD = 'ALIDAYU_TEMPLATE_CODE' def __init__(self, app=None): self.url = 'https://eco.taobao.com/router/rest' self.headers = { 'Content-type': 'application/x-www-form-urlencoded;charset=UTF-8', "Cache-Control": "no-cache", "Connection": "Keep-Alive", } if app: self.init_app(app) def init_app(self, app): config = app.config try: self.key = config[self.APP_KEY_FIELD] self.secret = config[self.APP_SECRET_FIELD] self.sign_name = config[self.SMS_SIGN_NAME_FIELD] self.api_params = { 'sms_free_sign_name': config[self.SMS_SIGN_NAME_FIELD], 'sms_template_code': config[self.SMS_TEMPLATE_CODE_FIELD], 'extend': '', 'sms_type': "normal", "method": "alibaba.aliqin.fc.sms.num.send", "app_key": self.key, "format": "json", "v": "2.0", "partner_id": "", "sign_method": "md5", } except Exception as e: logging.error(e.args) raise ValueError('请填写正确的阿里大鱼配置!') def send_sms(self, telephone, **params): self.api_params['timestamp'] = str(int(time() * 1000)) self.api_params['sms_param'] = str(params) self.api_params['rec_num'] = telephone newparams = "".join(["%s%s" % (k, v) for k, v in sorted(self.api_params.items())]) newparams = self.secret + newparams + self.secret sign = hashlib.md5(newparams.encode("utf-8")).hexdigest().upper() self.api_params['sign'] = sign resp = requests.post(self.url, params=self.api_params, headers=self.headers) data = resp.json() try: result = data['alibaba_aliqin_fc_sms_num_send_response']['result']['success'] return result except: print('=' * 10) print("阿里大于错误信息:", data) print('=' * 10) return False
from flask_sqlalchemy import SQLAlchemyfrom flask_mail import Mailfrom utils.alidayu import AlidayuAPIdb = SQLAlchemy()mail = Mail()alidayu = AlidayuAPI()
from flask import Flaskfrom apps.cms import bp as cms_bpfrom apps.front import bp as front_bpfrom apps.common import bp as common_bpimport configfrom exts import db, mail, alidayufrom flask_wtf import CSRFProtectdef create_app(): app = Flask(__name__) app.config.from_object(config) app.register_blueprint(cms_bp) app.register_blueprint(front_bp) app.register_blueprint(common_bp) db.init_app(app) mail.init_app(app) alidayu.init_app(app) CSRFProtect(app) return appif __name__ == '__main__': app = create_app() app.run(port=8000)