Python利用第三方平台发送短信验证码

  • 使用第三方工具容联云通讯
    https://www.yuntongxun.com

发送短信

  • 首先注册账号,注册成功即可免费测试(无需认证、充值),测试
  • 下载官方的SDK&Dome https://www.yuntongxun.com/doc/ready/demo/1_4_1_2.html
  • 模板短信SDK使用说明http://doc.yuntongxun.com/p/5a533e0c3b8496dd00dce08c
  • 解压文件,复制SDK文件夹,在进入DEMO的文件夹,复制SendTemplateSMS.py ,本人改名为sms.py 即发送短信,放在要使用的目录下,
    Python利用第三方平台发送短信验证码_第1张图片
  • 其中官方的SendTemplateSMS.py,即sms.py 重新封装
# -*- coding:utf-8 -*-

# import ssl
# ssl._create_default_https_context =ssl._create_stdlib_context # 解决Mac开发环境下,网络错误的问题

from ihome.libs.yuntongxun.CCPRestSDK import REST

# 说明:主账号,登陆云通讯网站后,可在"控制台-应用"中看到开发者主账号ACCOUNT SID
_accountSid = '8aaf070862181ad5016236f3bcc811d5'

# 说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTH TOKEN
_accountToken = '4e831592bd464663b0de944df13f16ef'

# 请使用管理控制台首页的APPID或自己创建应用的APPID
_appId = '8aaf070868747811016883f12ef3062c'

# 说明:请求地址,生产环境配置成app.cloopen.com
_serverIP = 'sandboxapp.cloopen.com'

# 说明:请求端口 ,生产环境为8883
_serverPort = "8883"

# 说明:REST API版本号保持不变
_softVersion = '2013-12-26'

# 云通讯官方提供的发送短信代码实例
# 发送模板短信
# @param to 手机号码
# @param datas 内容数据 格式为数组 例如:{'12','34'},如不需替换请填 ''
# @param $tempId 模板Id
# def sendTemplateSMS(to, datas, tempId):
#     # 初始化REST SDK
#     rest = REST(_serverIP, _serverPort, _softVersion)
#     rest.setAccount(_accountSid, _accountToken)
#     rest.setAppId(_appId)
#
#     result = rest.sendTemplateSMS(to, datas, tempId)
#     print(result)
class CCP():
    """自己封装的发短信类"""
    instance = None
    def __new__(cls, *args, **kwargs):
        # 判断CCP类有没有已经创建好的对象,如果没有,创建一个对象,并且保存
        # 如果有,则将保存的对象直接返回
        if cls.instance is None:
            obj = super(CCP, cls).__new__(cls, *args, **kwargs)

            # 初始化REST SDK
            obj.rest = REST(_serverIP, _serverPort, _softVersion)
            obj.rest.setAccount(_accountSid, _accountToken)
            obj.rest.setAppId(_appId)

            cls.instance = obj

        return cls.instance

    def send_template_sms(self, to, datas, tempId):

        result = self.rest.sendTemplateSMS(to, datas, tempId)
        # for k, v in result.iteritems():
        #
        #     if k == 'templateSMS':
        #         for k, s in v.iteritems():
        #             print '%s:%s' % (k, s)
        #     else:
        #         print '%s:%s' % (k, v)
        # smsMessageSid:ff75e0f84f05445ba08efdd0787ad7d0
        # dateCreated:20171125124726
        # statusCode:000000
        status_code = result.get("statusCode")
        if status_code == "000000":
            # 表示发送短信成功
            return 0
        else:
            # 发送失败
            return -1

if __name__ == '__main__':
    # 注意: 测试的短信模板编号为1
    # sendTemplateSMS('17600992168', ['123456', 5], 1)
    ccp = CCP()
    # 第一个参数手机号码,第二个的参数是 验证码和时间,第三个参数是模板编号
    ret = ccp.send_template_sms("17600992168", ["1234", "5"], 1)
    print(ret)

调用发短信

 # 发送验证码
    try:
        ccp = CCP()
        result = ccp.send_template_sms(mobile, [sms_code, int(constants.SMS_CODE_EXPIRE/60)], 1)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg="发送异常")

你可能感兴趣的:(Python利用第三方平台发送短信验证码)