• 03 . Django之腾讯云短信


    简介

    由于项目在注册、登录、找回密码 时需要发送短信验证的功能,我们使用腾讯云短信做。

    为什么要用腾讯云短信呢? 因为注册就送 100条免费短信 的额度。

    实现

    注册腾讯云

    注册一个腾讯云账户,腾讯云中提供了很多功能:云服务器、云存储你、云直播、云短信等很多功能。

    注册地址:https://cloud.tencent.com/

    注册并要实名认证

    开通云短信

    创建应用

    创建应用并将应用中生成的 SDK AppIDApp Key 复制下来,之后通过python发送短信时需要用到。

    创建签名

    在腾讯云短信签名时需要认证,认证需要填写签名类型:网站、APP、小程序、公众号,前三种需要提供企业资质等复杂的东西,个人公众号认证会比较便捷,所以推荐个人开发的话使用 公众号 进行签名。

    so,咱们需要先 申请一个公众号 然后 创建签名

    申请微信订阅号

    注册地址:https://mp.weixin.qq.com/

    创建签名


    创建模板

    发送短信

    上述的准备工作做完中我们开通相关服务并获取到如下几个值:

    # 创建应用,获取到 appid 和 appkey
    # 创建签名,获取 签名内容
    # 创建模板,获取 模板ID
    

    接下来开始使用Python发送短信。

    安装SDK

     pip install qcloudsms_py
    

    基于SDK发送短信

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import ssl
    # ssl._create_default_https_context = ssl._create_unverified_context
    from qcloudsms_py import SmsMultiSender, SmsSingleSender
    from qcloudsms_py.httpclient import HTTPError
    def send_sms_single(phone_num, template_id, template_param_list):
        """
        单条发送短信
        :param phone_num: 手机号
        :param template_id: 腾讯云短信模板ID
        :param template_param_list: 短信模板所需参数列表,例如:【验证码:{1},描述:{2}】,则传递参数 [888,666]按顺序去格式化模板
        :return:
        """
        appid = 112142311  # 自己应用ID
        appkey = "8cc5b87123y423433412387930004"  # 自己应用Key
        sms_sign = "幽梦DevOps"  # 自己腾讯云创建签名时填写的签名内容(使用公众号的话这个值一般是公众号全称或简称)
        sender = SmsSingleSender(appid, appkey)
        try:
            response = sender.send_with_param(86, phone_num, template_id, template_param_list, sign=sms_sign)
        except HTTPError as e:
            response = {'result': 1000, 'errmsg': "网络异常发送失败"}
        return response
    def send_sms_multi(phone_num_list, template_id, param_list):
        """
        批量发送短信
        :param phone_num_list:手机号列表
        :param template_id:腾讯云短信模板ID
        :param param_list:短信模板所需参数列表,例如:【验证码:{1},描述:{2}】,则传递参数 [888,666]按顺序去格式化模板
        :return:
        """
        appid = 112142311
        appkey = "8cc5b87123y423423412387930004"
        sms_sign = "幽梦DevOps"
        sender = SmsMultiSender(appid, appkey)
        try:
            response = sender.send_with_param(86, phone_num_list, template_id, param_list, sign=sms_sign)
        except HTTPError as e:
            response = {'result': 1000, 'errmsg': "网络异常发送失败"}
        return response
    if __name__ == '__main__':
        result1 = send_sms_single("18621048481", 548760, [666, ])
        print(result1)
        result2 = send_sms_single( ["18621048481", "15131255089", "15131255089", ],548760, [999, ])
        print(result2)
    
    关于频率限制

    腾讯云短信后台可以进行 短信频率 的限制。

    但是,由于我们是免费用户所以无法进行设置,只能使用默认的配置(30秒发1条/1小时发5条/1天发10条)。

    !

  • 相关阅读:
    Java 8 新特性之 Stream&forEach&map&filter&limit&sorted&统计函数&Collectors&并行(parallel)程序(转)
    kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
    java8 stream API
    Docker容器CPU、memory资源限制
    JVM调优总结 -Xms -Xmx -Xmn -Xss
    JAVA8之妙用Optional解决判断Null为空的问题
    【王凤鸣 太极缠丝功笔记】第二章
    【精美凉菜】黄瓜腐竹花生豆
    【瓜果篇】黄瓜
    【Teradata UDF】中文按字符查找chs_instr
  • 原文地址:https://www.cnblogs.com/you-men/p/13088949.html
Copyright © 2020-2023  润新知