暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

腾讯云(Tencent Cloud):如何通过Python给手机发送短信

Nephilim 2024-04-14
56

Tips:一些记录,一些笔记



2024/04/09

TUESDAY

In addition to hard work, I have no secret of success.

除了辛勤工作之外,我别无成功的秘诀。



01

Tencent Cloud


腾讯云官方:https://console.cloud.tencent.com/

首先,你必须注册一个腾讯云的账号,并且完成认证:

注册与认证的过程,按照官方的指导一步步的来就好,本文不赘述。


开通「云短信」:https://console.cloud.tencent.com/smsv2/open


开通的要求:


配置腾讯云「云短信」:

首先,创建应用:

应用创建好了以后,点进去就可以得到「App ID 与 App Key」


然后,创建签名:

申请签名的时候,需要有公众号:

等待审核通过后,就可以使用了,审核通过后,你就可以通过这里的ID编号执行API调用了。


不过现在「个人」是不允许过审的,只有企业、组织这种非个人的机构才有可能过审。


接下来创建模板:

每个模板都有自己的「模板ID」,这个可以在后面的Python脚本中进行调用;


根据需要,创建三个正文模板:

  • 重设密码

  • 用户注册

  • 用户登录


如果没有问题,审核通过后你会看到这样的画面,这时候它们就可以用了:


在不花钱的情况下,默认的频率限制是这样的:


02

代码


具体如下:

    #!/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


    from django.conf import settings


    # 给「单独」的手机发送短信
    def send_sms_single(mobile_phone, sms_template_id, sms_template_param_list):
    """ 单条短信发送 """
      sms_appid = settings.TENCENT_SMS_APP_ID
      sms_appkey = settings.TENCENT_SMS_APP_KEY
      sms_sign = settings.TENCENT_SMS_SIGN
      
      sender = SmsSingleSender(sms_appid, sms_appkey)
      
      try:
       response = sender.send_with_param(
       86,
       mobile_phone,
       sms_template_id,
       sms_template_param_list,
       sign = sms_sign
       )
      except HTTPError as e:
         response = { 'result': 1000, 'errormsg': '短信发送失败' }
         
      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 = settings.TENCENT_SMS_APP_ID
    appkey = settings.TENCENT_SMS_APP_KEY
    sms_sign = settings.TENCENT_SMS_SIGN


    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





    END




    温馨提示



    如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。


    文章转载自Nephilim,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论