1、目录架构
-send_tx_sms ------------包
-settings.py ------------配置
-sms.py ------------核心代码
-_init_.py
2.使用方法
pip install --upgrade tencentcloud-sdk-python 或 pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python
只用去腾讯云申请签名,和模板,申请成功之后,去settings.py配置就可以使用。
sms.py返回值为布尔值,true就是发送成功,false出现错误
3.代码
settings.py
#密钥 #可查看这个地址:https://console.cloud.tencent.com/cam/capi
SECRET_ID='AKxxxxxxxxxxxxxxxxxxxruo'
SECRET_KEY='lLxxxxxxxxxxxxxxxxxxxxxxxX'
#应用ID
SMSSDK_APP_ID='14xxxxxxxxx7'
#签名信息
SIGNNAME='xxx公众号' # 可查看这个地址:https://console.cloud.tencent.com/smsv2/csms-sign
# 模板 ID
TEMPLATE_ID='1xxxxxxxxxx0' #可查看这个地址:https://console.cloud.tencent.com/smsv2/csms-template
sms.py
# -*- coding: utf-8 -*-
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
# 导入对应产品模块的client models。
from tencentcloud.sms.v20210111 import sms_client, models# 导入可选配置类
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from .import settings
import random
def get_code(num): #num 验证码的位数 code = ''for i in range(num):font_int = str(random.randint(0, 9))# 从上面随机选出来一个code += font_intreturn codedef send_sms_by_mobile(mobile, code): #mobile 手机号 code 验证码 try:# SecretId、SecretKey 查询: https://console.cloud.tencent.com/cam/capicred = credential.Credential(settings.SECRET_ID,settings.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,支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)req = models.SendSmsRequest()req.SmsSdkAppId = settings.SMSSDK_APP_IDreq.SignName = settings.SIGNNAMEreq.TemplateId = settings.TEMPLATE_ID# 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致,,若无模板参数,则设置为空req.TemplateParamSet = [code,"4"] #{1}为您的登录验证码,请于{2}分钟内填写,如非本人操作,请忽略本短信。对应{1}{2}#"4":字符串req.PhoneNumberSet = ["+86"+mobile]req.SessionContext = ""req.ExtendCode = ""req.SenderId = ""resp = client.SendSms(req)# print(resp,'>>>>>>>>>')# 输出json格式的字符串回包res_dict = resp._serialize(allow_none=True)# print(res_dict,'>>>>>>>>>')if res_dict['SendStatusSet'][0]['Code'] == "Ok": #判断是否发送成功return Trueelse:return Falseexcept TencentCloudSDKException as err:print(err) #出现错误,记录日志return False
_init_.py
from .sms import get_code,send_sms_by_mobile