阿里大于短信平台:https://dysms.console.aliyun.com/dysms.htm#/overview

使用教程:https://blog.csdn.net/qq1031893936/article/details/81173878

控制台-->短信服务

进去后开通服务,点击添加签名

根据自己的情况设置

审核通过后,添加模板

添加对应的内容

需要用到的两个数据:签名名称、模板CODE

创建AccessKey

实现调接口发验证码:由于使用这个验证码需要购买套餐,所以这里就只封装发短信的模块就行

# 阿里大于相关配置
ALIDAYU_APP_KEY = 'LTAI4FmvBxyEb5Sip5b4PbZo' # AccessKey
ALIDAYU_APP_SECRET = '25zBQkqQNXjzwVDHH4m2I6qyoZlxOp' # AccessKeySecret
ALIDAYU_SIGN_NAME = 'cms' # 签名名称
ALIDAYU_TEMPLATE_CODE = 'SMS_178771780' # 模板id

# 阿里大于短信验证码sdk
import hashlib
from time import time
import logging
import requests class 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 SQLAlchemy
from flask_mail import Mail
from utils.alidayu import AlidayuAPI db = SQLAlchemy()
mail = Mail()
alidayu = AlidayuAPI()

from flask import Flask
from apps.cms import bp as cms_bp
from apps.front import bp as front_bp
from apps.common import bp as common_bp
import config
from exts import db, mail, alidayu
from flask_wtf import CSRFProtect def 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 app if __name__ == '__main__':
app = create_app()
app.run(port=8000)

最新文章

  1. k8s dns 服务安装配置说明
  2. java多线程执行问题
  3. cxGrid 增加序号 (非数据库绑定模式) (测试通过)
  4. Install MySQL on Mac OS X——MAC安装MySQL
  5. caffe里的blocking_queue.hpp与.cpp干了点什么呢???
  6. 《Java7中 下划线的新特性》
  7. [转][工地][存]Oracle触发器死锁问题解决
  8. Oracle学习网址
  9. winForm帮助信息
  10. python学习day10
  11. mongodb 学习二
  12. c# try-finally有什么用
  13. Linux-文件管理
  14. Kafka从入门到进阶
  15. kali2.0安装docker(转)
  16. C语言之二维数组与指针
  17. Python【每日一问】11
  18. python常用库之random
  19. python大法好——面向对象
  20. ThinkPhp框架开发微信支付——刷卡支付

热门文章

  1. Make It Connected CodeForces - 1095F (建图+最小生成树)
  2. docker学习系列-jdk基础镜像制作
  3. node.js----一个httpserver提交和解析get参数的例子
  4. 关于b站爬虫的尝试(一)
  5. bat文件设置环境变量脚本
  6. Luogu P1450 [HAOI2008]硬币购物 背包+容斥原理
  7. Win7 : 'java' is not recognized as internal or external command,
  8. Combine String HDU - 5707 dp or 广搜
  9. 【CUDA 基础】5.0 共享内存和常量内存
  10. solr系列之solr-5.5.5 window单机版默认Jetty安装