예제 #1
0
def send_mess():
    try: 
        # 腾讯云SecretId和SecretKey
        cred = credential.Credential("AKIDMXYsLYeEjxwyXtunQmwqY5RWLv2wuyDE", "va1Nk0oZv54vXxh58j45qNdeSA8uRwfR") 
        httpProfile = HttpProfile()
        httpProfile.endpoint = "sms.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = sms_client.SmsClient(cred, "ap-shanghai", clientProfile) 

        req = models.SendSmsRequest()
        
        # 设置发送的手机号,发送短信的模板id,发送短信的签名
        params = '{\"PhoneNumberSet\":[\"+8613792315475\",\"+8613125018788\"],\"TemplateID\":\"615569\",\"Sign\":\"zhenwei网\",\"SmsSdkAppid\":\"1400373765\"}'
        req.from_json_string(params)
        
        # 发送短信
        resp = client.SendSms(req)
       
        # 打印成功之后的发送信息 
        print(resp.to_json_string())
  

    except TencentCloudSDKException as err: 
        # 如果发送遇到错误,则打印错误输出信息
        print(err) 
예제 #2
0
파일: msg.py 프로젝트: strawberryLZ/test1
def sendMessage(phone, Code):

    try:
        clientProfile = ClientProfile()
        cred = credential.Credential(settings.TENT['SECRET_KEY'],
                                     settings.TENT["SECRET_ID"])
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
        req = models.SendSmsRequest()

        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = "1400304791"
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = "文轩的学习档案"
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [phone]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = "517488"
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [Code]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        print(resp.to_json_string(indent=2))

    except TencentCloudSDKException as err:
        print(err)
예제 #3
0
def send_phone_access(phone, code):
    secret_id = getattr(settings, 'TENCENT_CLOUD_SECRETID')
    secret_key = getattr(settings, 'TENCENT_CLOUD_SECRETKEY')
    sms_appid = getattr(settings, 'SMS_APPID_TENCENT')
    sms_tplid = getattr(settings, 'SMS_TPL_ID_TENCENT')
    sms_tpl_sign = getattr(settings, 'SMS_TPL_SIGN_TENCENT')
    if not secret_id or not secret_key:
        logger.error('TENCENT CLOUD 配置错误')
        return False, 404
    if not sms_appid or not sms_tplid or not sms_tpl_sign:
        logger.error('TENCENT SMS 配置错误')
        return False, 404
    try:
        cred = credential.Credential(secret_id, secret_key)
        http_profile = HttpProfile()
        http_profile.endpoint = "sms.tencentcloudapi.com"
        client_profile = ClientProfile()
        client_profile.httpProfile = http_profile
        client = sms_client.SmsClient(cred, "", client_profile)
        req = sms_models.SendSmsRequest()
        req.SmsSdkAppid = sms_appid
        req.Sign = sms_tpl_sign
        req.ExtendCode = ""
        req.SenderId = ""
        req.PhoneNumberSet = ["+86" + phone]
        req.TemplateID = sms_tplid
        req.TemplateParamSet = [code]
        resp = client.SendSms(req)
        if resp.SendStatusSet[0].Code != 'Ok':
            logger.error(resp.to_json_string())
            return False, 404
        return True, code
    except TencentCloudSDKException as e:
        logger.error(e)
예제 #4
0
 def sms_callback(phone):
     """运营服务商发送短信callback"""
     try:
         cred = credential.Credential(settings.SMS_SECRET_ID,
                                      settings.SMS_SECRET_KEY)
         http_profile = HttpProfile()
         http_profile.endpoint = "sms.tencentcloudapi.com"
         client_profile = ClientProfile()
         client_profile.httpProfile = http_profile
         client = sms_client.SmsClient(cred, "", client_profile)
         req = models.SendSmsRequest()
         phone_number = phone
         sms_code = '%06d' % random.randint(0, 999999)
         print("手机验证码", sms_code)
         expire_in = "1"  # min
         params = {
             "PhoneNumberSet": ["+86" + str(phone_number)],
             "TemplateParamSet": [sms_code, expire_in],
             "TemplateID": settings.SMS_TEMPLATE_ID,
             "SmsSdkAppid": settings.SMS_SDK_APP_ID,
             "Sign": settings.SMS_SIGN
         }
         req.from_json_string(json.dumps(params))
         resp = client.SendSms(req)
         if json.loads(
                 resp.to_json_string())["SendStatusSet"][0]["Code"] == "Ok":
             return sms_code
     except TencentCloudSDKException as err:
         print(err)
예제 #5
0
def sendsms(phone, randomCode, TemplateID="517554"):

    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
        # 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
        # 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
        # 以免泄露密钥对危及你的财产安全。
        # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential(settings.TENCENT_SECRET_ID,
                                     settings.TENCENT_SECRET_KEY)
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化要请求产品(以sms为例)的client对象
        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, settings.TENCENT_CITY)

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
        # SDK提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台: https://console.cloud.tencent.com/sms/smslist
        # sms helper: https://cloud.tencent.com/document/product/382/3773

        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = settings.TENCENT_APP_ID
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = settings.TENCENT_SIGN

        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = ["+86%s" % phone]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = TemplateID
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [randomCode]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)
        if resp.SendStatusSet[0].Fee:
            return True
        # 输出json格式的字符串回包

        print(resp.to_json_string(indent=2))
        return False

    except TencentCloudSDKException as err:
        print(err)
예제 #6
0
def login():
    # if request.method == 'POST':
    # 获取通过url请求传参的数据
    Phone = request.form.get("Phone")
    Code = request.form.get("Code")
    print('Phone')
    # 获取url请求传的密码,明文
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
        # 本示例采用从环境变量读取的方式,需要预先在环境变量中设置这两个值
        # 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人
        # CAM 密钥查询:https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential("AKIDDBub3vFl6DZfaGe26B0cy6yb7d1Arcvy",
                                     "zkEgy1pIWUBdQy291tWhlYooZ5uVt1u4")
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )
        # 实例化一个 http 选项,可选,无特殊需求时可以跳过
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # POST 请求(默认为 POST 请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)
        # # 非必要步骤:
        # # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
        req = models.SendSmsRequest()
        req.SmsSdkAppid = "1400464331"
        # # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息
        req.Sign = "JiuKey"
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = "xxx"
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [Phone]
        # 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID
        req.TemplateID = "818049"
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [Code]
        # # 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
        resp = client.SendSms(req)
        # 输出 JSON 格式的字符串回包
        print(resp.to_json_string(indent=2))
        return Phone

    except TencentCloudSDKException as err:
        print(err)
    return 'success'
예제 #7
0
파일: utils.py 프로젝트: colaftc/ggtools
def send_sms(numbers: List[str], req: models.SendSmsRequest, cred: credential.Credential):
    client = sms_client.SmsClient(cred, 'ap-guangzhou')
    req.PhoneNumberSet = numbers
    try:
        resp = client.SendSms(req)
        return resp.to_json_string()
    except TencentCloudSDKException as err:
        print(err)
        return False
예제 #8
0
 def __init__(self):
     super().__init__()
     cred = get_tencent_cloud_credential()
     http_profile = HttpProfile()
     http_profile.endpoint = "sms.tencentcloudapi.com"
     client_profile = ClientProfile()
     client_profile.httpProfile = http_profile
     self._client = sms_client.SmsClient(cred, "ap-guangzhou",
                                         client_profile)
예제 #9
0
파일: pysms.py 프로젝트: mdjdot/pysamples
def sendSMS(code, due):
    try:
        # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential("*********", "*********")
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        req = models.SendSmsRequest()

        # 实例化要请求产品(以sms为例)的client对象
        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-shanghai")

        # 帮助链接:
        # 短信控制台: https://console.cloud.tencent.com/sms/smslist
        # sms helper: https://cloud.tencent.com/document/product/382/3773

        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = "0000000000"

        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = "腾讯云"

        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""

        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = "xxx"

        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = ["+8611111111111"]

        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = "555555"

        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [code, due]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。

        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        return resp.to_json_string(indent=2)

    except TencentCloudSDKException as err:
        print(err)
        return ""
예제 #10
0
    def send_message(self, PhoneNumberSet, TemplateID, TemplateParamSet):
        """
        :param PhoneNumberSet: 发送手机号
        :param TemplateID: 短信模板ID
        :param TemplateParamSet: 模板中的参数
        :return:
        """
        cred = credential.Credential(self.apiId, self.apiKey)

        # 实例化一个 http 选项,可选,无特殊需求时可以跳过
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # POST 请求(默认为 POST 请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        # httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile
        # 实例化 SMS 的 client 对象
        # 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-shanghai", clientProfile)

        messageDict = {
            "PhoneNumberSet": PhoneNumberSet,
            "TemplateID": TemplateID,
            "SmsSdkAppid": smsAppId,
            "Sign": sign,
            "TemplateParamSet": TemplateParamSet,
        }

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        req = requestSms(messageDict)

        try:
            # 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
            resp = client.SendSms(req)
            # 输出 JSON 格式的字符串回包
            print(resp.to_json_string(indent=2))
            resp = json.loads(
                resp.to_json_string(indent=0).replace(
                    r"\n", "")).get("SendStatusSet")[0]
            return resp
        except TencentCloudSDKException as err:
            print(err)
            err = {
                key.capitalize(): value
                for key, value in err.__dict__.items()
            }
            return err
예제 #11
0
def tencent_send_msg(phone, ret_num, template_id):
    try:
        cred = credential.Credential(settings.SecretId, settings.SecretKey)
        client = sms_client.SmsClient(cred, "ap-guangzhou")
        req = models.SendSmsRequest()
        req.SmsSdkAppid = settings.SmsSdkAppid
        req.Sign = settings.Sign
        req.ExtendCode = ""
        req.SenderId = ""
        req.PhoneNumberSet = ["+86%s" % phone]
        req.TemplateID = template_id
        req.TemplateParamSet = [ret_num]
        resp = client.SendSms(req)

    except TencentCloudSDKException as err:
        print(err)
예제 #12
0
def send_china_msg(phone, code):
    """
    发送短信
    :param code:短信验证码,如:86
    :param phone: 手机号,示例:"15131255555"
    :return:
    """
    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context

    response = BaseResponse()
    try:
        phone = "{}{}".format("+86", phone)
        cred = credential.Credential("AKIDW3Rgszw84ylQxMzNn7KOJ6kFPSL5c5MU",
                                     "GQSMXmtsjR0QhuIalzTp250nU6digZSD")
        client = sms_client.SmsClient(cred, "ap-guangzhou")

        req = models.SendSmsRequest()
        req.SmsSdkAppid = "1400302209"
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = "Python之路"
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [
            phone,
        ]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = "516680"
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [
            code,
        ]

        resp = client.SendSms(req)

        response.message = resp.SendStatusSet[0].Message
        if resp.SendStatusSet[0].Code == "Ok":
            response.status = True

    except TencentCloudSDKException as err:
        response.message = err.message

    return response
예제 #13
0
def send_china_msg(phone, code):
    """
    发送短信
    :param code:短信验证码,如:86
    :param phone: 手机号,示例:"15131255555"
    :return:
    """
    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context

    response = BaseResponse()
    try:
        phone = "{}{}".format("+86", phone)
        code = "{}".format(code)
        print(phone, code)
        cred = credential.Credential(settings.TENCENT_SECRET_ID,
                                     settings.TENCENT_SECRET_KEY)
        client = sms_client.SmsClient(cred, settings.TENCENT_CITY)

        req = models.SendSmsRequest()
        req.SmsSdkAppid = settings.TENCENT_APP_ID
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = settings.TENCENT_SIGN
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [
            phone,
        ]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = "888188"
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [
            code,
        ]
        resp = client.SendSms(req)
        response.message = resp.SendStatusSet[0].Message
        if resp.SendStatusSet[0].Code == "Ok":
            response.status = True

    except TencentCloudSDKException as err:
        response.message = err.message

    return response
예제 #14
0
def send_message(phone, random_code):
    '''
    下面的配置最好写在settings里
    :param phone:
    :param random_code:
    :return:
    '''
    try:
        phone = '{}{}'.format("+86", phone)
        cred = credential.Credential("AKIDkGlz4tb2i8GAqSosgHdiZElHafX9bbPI",
                                     "nKtDmsncS4QVUEispiNmvue8QSO5WhiU")
        client = sms_client.SmsClient(cred, "ap-beijing")
        req = models.SendSmsRequest()

        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = "1400320908"
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = "乔晓强个人公众号"
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [
            phone,
        ]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = "541725"
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [
            random_code,
        ]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        if resp.SendStatusSet[0].Code == 'Ok':
            return True
        # print(resp.to_json_string(indent=2))

    except TencentCloudSDKException as err:
        # print(err)
        pass
예제 #15
0
    def _get_template(self, params):
        """
        配置模版
        :param params:
        :return:
        """
        try:
            # 申请短信模版
            client = sms_client.SmsClient(self.cred, "ap-guangzhou")
            req = models.AddSmsTemplateRequest()
            req.TemplateName = self.template
            req.TemplateContent = self.content
            resp = client.AddSmsTemplate(req)
            ten_data = resp.to_json_string(indent=2)

            # 日志
            logger.info('time:{}, tempalate api data:{}'.format(datetime.datetime.now(), ten_data))
        except TencentCloudSDKException as err:
            # 错误日志
            logger.error('time:{},msg template error: {}'.format(datetime.datetime.now(), err))
예제 #16
0
def send_china_msg(phone, code):
    """
    发送短信
    :param code:短信验证码,如:86
    :param phone: 手机号,示例:"13335913629"
    :return:
    """
    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context

    response = BaseResponse()
    try:
        phone = "{}{}".format("+86", phone)
        cred = credential.Credential(COS_SECRET_ID, COS_SECRET_KEY)
        client = sms_client.SmsClient(cred, "ap-guangzhou")

        req = models.SendSmsRequest()
        req.SmsSdkAppid = "1400397656"
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = "共享绘本测试"
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [
            phone,
        ]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = "661624"
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [
            code,
        ]

        resp = client.SendSms(req)
        print(resp)
        response.message = resp.SendStatusSet[0].Message
        if resp.SendStatusSet[0].Code == "Ok":
            response.status = True

    except TencentCloudSDKException as err:
        response.message = err.message

    return response
예제 #17
0
def send_sms(telephone, captcha):
    cred = credential.Credential("AKIDb0A8qIqRkpfFYczD7lCNuC8pGRL0bnIX",
                                 "81hBOK0TDixNZVDgIgxxjGWUC9rISMhm")
    http_profile = HttpProfile()
    http_profile.endpoint = "sms.tencentcloudapi.com"

    client_profile = ClientProfile()
    client_profile.httpProfile = http_profile
    client = sms_client.SmsClient(cred, "", client_profile)

    req = models.SendSmsRequest()

    params = '{"PhoneNumberSet":["+86%s"],"TemplateID":"511960","Sign":"chaobbstop网站","TemplateParamSet":["%s"],"SmsSdkAppid":"1400302167"}' % (
        telephone, captcha)
    req.from_json_string(params)
    resp = client.SendSms(req)
    result = json.loads(resp.to_json_string())["SendStatusSet"][0]["Code"]
    if result == "Ok":
        return True
    else:
        return False
예제 #18
0
    def send(self, phones, template_id=None, params=None):
        """
        发送短信
        :param phone: 电话号码
        :param template_id: 短信模版ID
        :param params: 短信模版参数:["", ""]数组类型
        :return:
        """
        # 默认是短信注册验证模版
        if template_id is None:
            template_id = self.template_id
        # 短息模版参数
        if params is None:
            code = self._get_verify_code()
            params = [code, "1"]
        else:
            code = ''
        try:
            client = sms_client.SmsClient(self.cred, "ap-guangzhou")
            req = models.SendSmsRequest()
            req.SmsSdkAppid = settings.MESSAGE_APP_ID
            req.Sign = settings.MESSAGE_SIGN
            req.TemplateID = template_id  # 模版ID
            req.TemplateParamSet = params  # 模版参数
            req.PhoneNumberSet = phones

            resp = client.SendSms(req)
            ten_res = resp.to_json_string(indent=2)
            json_res = json.loads(ten_res)
            send_status = json_res.get('SendStatusSet')

            logger.info('time:{}, send message:{}'.format(datetime.datetime.now(), json_res))

            # 存储数据
            if send_status[0].get('Code') == 'Ok':
                return True, code
        except TencentCloudSDKException as err:
            logger.error('time:{}, send message error:{}'.format(datetime.datetime.now(), err))
            return False, None
예제 #19
0
파일: notice.py 프로젝트: menhuan/notes
def send_sms(content, phones):
    try:
        logger.info(f"========{content}")
        secret_id, secret_key = __acquire_sms_config()
        cred = credential.Credential(secret_id, secret_key)
        # 实例化要请求产品(以cvm为例)的client对象
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        client = sms_client.SmsClient(cred, "ap-beijing", clientProfile)
        # 实例化一个请求对象
        req = models.SendSmsRequest()
        req.SmsSdkAppid = "1400301649"
        req.Sign = "爱极客"
        req.PhoneNumberSet = phones
        req.TemplateID = "599228"
        req.TemplateParamSet = content
        resp = client.SendSms(req)
        result = resp.to_json_string(indent=2)
        print(resp.to_json_string(indent=2))
        for status in json.loads(resp.to_json_string(indent=2)).get(
                "SendStatusSet", {}):
            # 现在只发送一条短信数据
            code = status.get("Code")
            if code.lower() == "ok":
                break
            else:
                return False
        return True
    except Exception as e:
        print(e)
        return False
예제 #20
0
def Sendcode(phone, code):
    # -*- coding: utf-8 -*-
    from tencentcloud.common import credential
    from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
    # 导入对应产品模块的client models。
    from tencentcloud.sms.v20190711 import sms_client, models

    try:
        phone = f'+86{phone}'
        code = str(code)
        cred = credential.Credential("secretid", "secretkey")

        client = sms_client.SmsClient(cred, "ap-guangzhou")

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        req.SmsSdkAppid = ""
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = ""
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.PhoneNumberSet = [phone]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = ""
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [code]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        print(resp.to_json_string(indent=2))

    except TencentCloudSDKException as err:
        print(err)
예제 #21
0
def SendSMS(Time, Hostname, Message):
    try:
        cred = credential.Credential("APIkey", "APIsecret")
        httpProfile = HttpProfile()
        httpProfile.endpoint = "sms.tencentcloudapi.com"
        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = sms_client.SmsClient(cred, "ap-shanghai", clientProfile)
        req = models.SendSmsRequest()
        PhoneNumber = "your_phone_number"
        TemplateID = "your_templateID"
        Arg1 = Time
        Arg2 = Hostname
        Arg3 = Message
        params = '{"PhoneNumberSet":["+86' + PhoneNumber + '"],"TemplateID":"' + TemplateID + '","Sign":"your_sms_sign","TemplateParamSet":[" ' + Arg1 + ' "," ' + Arg2 + ' "," ' + Arg3 + ' "],"SmsSdkAppid":"1400071610"}'
        req.from_json_string(params)

        resp = client.SendSms(req)
        print(resp.to_json_string())

    except TencentCloudSDKException as err:
        print(err)
예제 #22
0
    def send_sms(self, code, mobile):
        """
        发送短信
        :param code: 验证码
        :param mobile: 手机号,例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号
        :return:
        """
        try:
            client = sms_client.SmsClient(self.cred, "ap-beijing",
                                          self.clientProfile)
            req = models.SendSmsRequest()
            req.TemplateID = "543954"
            req.PhoneNumberSet = [str("+86" + mobile)]
            req.Sign = "然小狼"
            req.TemplateParamSet = [code]
            req.SmsSdkAppid = "1400324019"

            resp = client.SendSms(req)
            re_dict = json.loads(resp.to_json_string())
            return re_dict

        except TencentCloudSDKException as err:
            print(err)
            pass
예제 #23
0
    # 实例化一个http选项,可选的,没有特殊需求可以跳过。
    httpProfile = HttpProfile()
    httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
    httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
    httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

    # 非必要步骤:
    # 实例化一个客户端配置对象,可以指定超时时间等配置
    clientProfile = ClientProfile()
    clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
    clientProfile.language = "en-US"
    clientProfile.httpProfile = httpProfile

    # 实例化要请求产品(以sms为例)的client对象
    # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
    client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

    # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
    # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
    # 属性可能是基本类型,也可能引用了另一个数据结构
    # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
    req = models.CallbackStatusStatisticsRequest()

    # 基本类型的设置:
    # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
    # SDK提供对基本类型的指针引用封装函数
    # 帮助链接:
    # 短信控制台: https://console.cloud.tencent.com/sms/smslist
    # sms helper: https://cloud.tencent.com/document/product/382/3773

    # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
예제 #24
0
    def tencent_send(phone_num):
        try:
            # 必要步骤:
            # 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
            # 本示例采用从环境变量读取的方式,需要预先在环境变量中设置这两个值
            # 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人
            # CAM 密钥查询:https://console.cloud.tencent.com/cam/capi

            # cred = credential.Credential("secretId","secretKey")
            cred = credential.Credential(os.environ.get("secretId"),
                                         os.environ.get("secretKey"))
            # print(os.environ.get("secretId"))
            verify_code = str(int((random.uniform(0, 1) * 9 + 1) * 100000))
            phone = '+86' + phone_num

            # 实例化一个 http 选项,可选,无特殊需求时可以跳过
            httpProfile = HttpProfile()
            httpProfile.reqMethod = "POST"  # POST 请求(默认为 POST 请求)
            httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
            httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

            # 非必要步骤:
            # 实例化一个客户端配置对象,可以指定超时时间等配置
            clientProfile = ClientProfile()
            clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
            clientProfile.language = "en-US"
            clientProfile.httpProfile = httpProfile

            # 实例化 SMS 的 client 对象
            # 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量
            client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

            # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
            # 您可以直接查询 SDK 源码确定 SendSmsRequest 有哪些属性可以设置
            # 属性可能是基本类型,也可能引用了另一个数据结构
            # 推荐使用 IDE 进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
            req = models.SendSmsRequest()

            # 基本类型的设置:
            # SDK 采用的是指针风格指定参数,即使对于基本类型也需要用指针来对参数赋值
            # SDK 提供对基本类型的指针引用封装函数
            # 帮助链接:
            # 短信控制台:https://console.cloud.tencent.com/smsv2
            # sms helper:https://cloud.tencent.com/document/product/382/3773

            # 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666
            req.SmsSdkAppid = "1400401547"
            # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息
            req.Sign = "瑞选网"
            # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
            req.ExtendCode = ""
            # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
            req.SessionContext = "xxx"
            # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
            req.SenderId = ""
            # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
            # 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
            req.PhoneNumberSet = [
                phone,
            ]
            # 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID
            req.TemplateID = "665620"
            # 模板参数: 若无模板参数,则设置为空
            req.TemplateParamSet = [
                verify_code,
            ]

            # 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
            resp = client.SendSms(req)

            # 输出 JSON 格式的字符串回包
            re_data = json.loads(resp.to_json_string(indent=2))
            print(re_data)
            if resp and re_data.get('SendStatusSet')[0].get('Code') == 'Ok':
                return verify_code
            else:
                return None

            # if re_data.get('code') == 2:
            #     return verify_code
            # else:
            #     return None

        except TencentCloudSDKException as err:
            print(err)
예제 #25
0
def send_sms(mobile=None, code=None):
    """发送短信"""
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
        # 本示例采用从环境变量读取的方式,需要预先在环境变量中设置这两个值
        # 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人
        # CAM 密钥查询:https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential(TENCENT_SECRETID, TENCENT_SECRETKEY)
        ssl._create_default_https_context = ssl._create_unverified_context
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化一个 http 选项,可选,无特殊需求时可以跳过
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # POST 请求(默认为 POST 请求)
        httpProfile.reqTimeout = 60  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        # 实例化 SMS 的 client 对象
        # 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 您可以直接查询 SDK 源码确定 SendSmsRequest 有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用 IDE 进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK 采用的是指针风格指定参数,即使对于基本类型也需要用指针来对参数赋值
        # SDK 提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台:https://console.cloud.tencent.com/smsv2
        # sms helper:https://cloud.tencent.com/document/product/382/3773

        # 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666
        req.SmsSdkAppid = TENCENT_SMSSDKAPPID
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息
        req.Sign = TENCENT_SIGN
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = "xxx"
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = ["+86" + mobile]
        # 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID
        req.TemplateID = TENCENT_TEMPLATEID
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [code]

        # 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
        resp = client.SendSms(req)

        # 输出 JSON 格式的字符串回包
        logger.info(resp.to_json_string(indent=2))

    except TencentCloudSDKException as err:
        logger.info(err)
예제 #26
0
def send_notification(params, phone='+8618861805533', template='success'):
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
        # 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
        # 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
        # 以免泄露密钥对危及你的财产安全。
        # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential(appid, appsecret)
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化一个http选项,可选的,没有特殊需求可以跳过。
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        # 实例化要请求产品(以sms为例)的client对象
        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
        # SDK提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台: https://console.cloud.tencent.com/sms/smslist
        # sms helper: https://cloud.tencent.com/document/product/382/3773

        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = "1400351701"
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = "徐浩宇的主页"
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = ""
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [phone]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        if template == 'success':
            req.TemplateID = "578337"
        elif template == 'error':
            req.TemplateID = "577893"

        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = params

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        print(resp.to_json_string(indent=2))

    except TencentCloudSDKException as err:
        print(err)
예제 #27
0
파일: msg.py 프로젝트: runiccolon/auction
def send_msg(phone, random_code, template_id="746429"):
    """
        发送短信验证码
        1.注册腾讯云账号,开通腾讯云短信
        2.创建应用
            腾讯云SDK AppId = 1400436568
        3.申请签名(个人: 公众号)
            ID      名称
            318557  笑清风
        4.申请模板
            ID      名称
            746429  小程序测试
        5.申请腾讯云API  https://console.cloud.tencent.com/cam/capi
            SecretId
            Secretkey
        6.调用相关接口发送短信
            SDK, 写好的工具

    """

    # 导入可选配置类
    from tencentcloud.common.profile.client_profile import ClientProfile
    from tencentcloud.common.profile.http_profile import HttpProfile

    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
        # 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
        # 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
        # 以免泄露密钥对危及你的财产安全。
        # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
        CHINA = "+86"
        phone = "{}{}".format(CHINA, phone)
        cred = credential.Credential(settings.TENCENT_SECRET_ID,
                                     settings.TENCENT_SECRET_KEY)
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化要请求产品(以sms为例)的client对象
        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, settings.TENCENT_CITY)
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
        # SDK提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台: https://console.cloud.tencent.com/sms/smslist
        # sms helper: https://cloud.tencent.com/document/product/382/3773

        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = settings.TENCENT_APP_ID
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = settings.TENCENT_SIGN
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = "xxx"
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [
            phone,
        ]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = template_id
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [
            f"{random_code}",
        ]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        if resp.SendStatusSet[0].Code == "Ok":
            return True

        print(resp.to_json_string(indent=2))

    except TencentCloudSDKException as err:
        print(err)
예제 #28
0
def send_vcode_sms(tel, code):
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
        # 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
        # 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
        # 以免泄露密钥对危及你的财产安全。
        # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential(TencentCloud_SecretId,
                                     TencentCloud_SecretKey)
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化一个http选项,可选的,没有特殊需求可以跳过。
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        # 实例化要请求产品(以sms为例)的client对象
        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
        # SDK提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台: https://console.cloud.tencent.com/sms/smslist
        # sms helper: https://cloud.tencent.com/document/product/382/3773

        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = SMS_SmsSdkAppid
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = "王冬代码练习"
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = ""
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = ["+86%s" % tel]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = SMS_TemplateID
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [code, variable.VERIFY_CODE_EXPIRE_TIME_CN]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        print(resp.to_json_string())
        if resp.SendStatusSet[0].Code == "Ok" and resp.SendStatusSet[
                0].Message == "send success":
            return True
        else:
            # 发送失败,则打日志
            logger.warning(
                "tel:%s || vote:%s || RequestId:%s" %
                (tel, resp.SendStatusSet[0].Message, resp.RequestId))
            return resp.SendStatusSet[0].Message

    except TencentCloudSDKException as err:
        # 报错,则打日志
        logger.error("tel:%s || vote:%s" % (tel, str(err)))
        print(err)

    # 示例正常的返回值 res 的值
    """
    {
        "SendStatusSet": [
            {
                "SerialNo": "2019:538884*********",
                "PhoneNumber": "+86182********",
                "Fee": 1,
                "SessionContext": "",
                "Code": "Ok",
                "Message": "send success"
            }
        ],
        "RequestId": "bf0d639e-9956-4366-be0f-a23001900ce0"
    }
    """
    return '发送失败,未知原因'
예제 #29
0
파일: send.py 프로젝트: z201/flash-card
def send_sms(phone_number, code, minute):
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
        # 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
        # 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
        # 以免泄露密钥对危及你的财产安全。
        # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential(secret_id, secret_key)
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化一个http选项,可选的,没有特殊需求可以跳过。
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        # 实例化要请求产品(以sms为例)的client对象
        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
        # SDK提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台: https://console.cloud.tencent.com/sms/smslist
        # sms helper: https://cloud.tencent.com/document/product/382/3773

        # 以下信息根据需要进行更改
        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = SmsSdkAppid
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = SmsSign
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = "123456"
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        phone_number = "+86" + str(phone_number)
        req.PhoneNumberSet = [phone_number]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = SmsTemplateID
        # 模板参数: 若无模板参数,则设置为空 验证码 验证时间
        req.TemplateParamSet = [str(code), str(minute)]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        # print(resp.to_json_string(indent=2).get("SendStatusSet").get("Code"))
        """
        {'SendStatusSet': [{'SerialNo': '2019:2486505420595011479', 'PhoneNumber': '+86135555555', 'Fee': 1, 'SessionContext': '123456', 'Code': 'Ok', 'Message': 'send success'}], 'RequestId': '21a4489f-f873-4115-bc08-1aaa5c8aa91c'}

        """

        code = json.loads(resp.to_json_string(indent=2))
        data = code.get("SendStatusSet")[0].get("Code")
        return data

    except TencentCloudSDKException as err:
        print(err)
        return "Error"