腾讯云短信
1.腾讯云短信介绍和申请
# 咱们要写发送短信接口,我们要发短信,借助于短信运营商 # 腾讯云开放平台,有很多开放的接口供咱们使用,咱们用的是短信 -注册平台---》找到短信 -https://console.cloud.tencent.com/smsv2 # 申请使用腾讯云短信: 1 创建签名:使用公众号申请 -网站:备案:工信部备案 -申请个人一个公众号: -https://mp.weixin.qq.com/ -等审核通过 2 申请模板:发送短信的模板 {1} {2} 后期用代码填上 3 免费赠送100条 4 代码发送短信:参照文档写代码:https://cloud.tencent.com/document/product/382/13444 -v2 老一些 -v3 最新
2.什么是api,什么是sdk
# API文档 -之前学的接口文档的概念 -使用api调用,比较麻烦,固定输入,接受固定的返回 -使用postman都可以测试,携带你的认证的秘钥。 # SDK:Software Development Kit 软件开发工具包 -分语言的 -基于API,使用某个编程语言封装的包 -例如python:pip install 包 -包.发短信(参数) -一般厂商都会提供各大主流语言的sdk # 腾讯短信sdk使用步骤 1 已开通短信服务,创建签名和模板并通过审核 # 开了 2 如需发送国内短信,需要先 购买国内短信套餐包。 #赠送了 3 已准备依赖环境:Python 2.7 - 3.6 版本。 #我们有 4 已在访问管理控制台 >API密钥管理页面获取 SecretID 和 SecretKey。 SecretID 用于标识 API 调用者的身份。 SecretKey 用于加密签名字符串和服务器端验证签名字符串的密钥,SecretKey 需妥善保管 5 短信的调用地址为sms.tencentcloudapi.com。
3 腾讯短信功能二次封装
# -*- coding: utf-8 -*- from utils.response import APIResponse import random 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 def get_code(num=4): code = '' for i in range(num): random_num = random.randint(0, 9) code += str(random_num) return code def txy_sms_phone(mobile, code): try: cred = credential.Credential(settings.SECRET_ID, settings.SECRET_KEY) # cred = credential.Credential( # os.environ.get(""), # os.environ.get("") # ) # 实例化一个http选项,可选的,没有特殊需求可以跳过。 httpProfile = HttpProfile() # 如果需要指定proxy访问接口,可以按照如下方式初始化hp(无需要直接忽略) # httpProfile = HttpProfile(proxy="http://用户名:密码@代理IP:代理端口") 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.A8 client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile) req = models.SendSmsRequest() # 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId,示例如1400006666 # 应用 ID 可前往 [短信控制台](https://console.cloud.tencent.com/smsv2/app-manage) 查看 req.SmsSdkAppId = settings.APP_ID # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名 # 签名信息可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-sign) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-sign) 的签名管理查看 req.SignName = settings.SIGN_NAME # 模板 ID: 必须填写已审核通过的模板 ID # 模板 ID 可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-template) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-template) 的正文模板管理查看 req.TemplateId = settings.TEMPLATE_ID # 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致,,若无模板参数,则设置为空 req.TemplateParamSet = [code, '2'] # 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号] # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号 req.PhoneNumberSet = ["+86" + str(mobile)] # 用户的 session 内容(无需要可忽略): 可以携带用户侧 ID 等上下文信息,server 会原样返回 req.SessionContext = "" # 短信码号扩展号(无需要可忽略): 默认未开通,如需开通请联系 [腾讯云短信小助手] req.ExtendCode = "" # 国际/港澳台短信 senderid(无需要可忽略): 国内短信填空,默认未开通,如需开通请联系 [腾讯云短信小助手] req.SenderId = "" resp = client.SendSms(req) # 输出json格式的字符串回包 print(resp.to_json_string(indent=2)) return True except TencentCloudSDKException as err: return False
SECRET_ID = 'FYm3D872pdGg0' SECRET_KEY = 'iFbkeT6Ya1Qi' APP_ID = '143172' SIGN_NAME='柏众号' TEMPLATE_ID='1677'
以上自己填,我删了一部分
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!