03-04 腾讯云短信开发
一. 短信服务应用申请
""" 准备工作
1)创建短信应用 - 应用管理
2)申请短信签名 - 国内短信 > 签名管理
3)申请短信模块 - 国内短信 > 正文模板管理
"""
一. python中开发腾讯云短信服务
"""
1)API文档,接口的使用说吧
2)SDK,基于开发语言封装的可以直接调用的功能(工具)集合
官网sdk使用文档中找到安装命令:pip install qcloudsms_py
按照sdk使用说明进行开发:https://cloud.tencent.com/document/product/382/11672
"""
sdk使用说明: https://cloud.tencent.com/document/product/382/11672
t_sms.py
# 所有配置换成申请的数据
# 申请的短信应用 SDK AppID
appid = 1400
# 申请的短信应用 SDK AppKey
appkey = "ba81"
# 申请的短信模板ID,需要在短信控制台中申请
template_id = 5447
# 申请的签名,参数使用的是`签名内容`,而不是`签名ID`
sms_sign = "Owen的技术栈"
from qcloudsms_py import SmsSingleSender
sender = SmsSingleSender(appid, appkey)
import random
def get_code():
code = ''
for i in range(4):
code += str(random.randint(0, 9))
return code
mobile = 13344556677
# 模板所需参数,和申请的模板中占位符要保持一致
code = get_code()
print(code)
params = [code, 5]
try:
result = sender.send_with_param(86, mobile, template_id, params, sign=sms_sign, extend="", ext="")
if result and result.get('result') == 0:
print('发送成功')
except Exception as e:
print('短信发送失败:%s' % e)
一. 短信服务二次封装
在libs下创造tx_sms包
初始化
from .send import send_sms
from .send import make_code
settings.py
# 短信应用 SDK AppID
APPID = 1400123123 # SDK AppID 以1400开头
# 短信应用 SDK AppKey
APPKEY = "2025dfawefwfjkiokjg984100"
# 需要发送短信的手机号码
# phone_numbers = ["21212313123", "12345678902", "12345678903"]
# 短信模板ID,需要在短信控制台中申请
TEMPLATE_ID = 7839 # NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请
# 签名
SMS_SIGN = "腾讯云" # NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请
短信
import random
from qcloudsms_py import SmsSingleSender
from libs.sms import settings
import utils
def make_code():
code_list = []
for i in range(6):
code_list.append(str(random.randint(0, 9)))
return ''.join(code_list)
def send_sms(code, telephone):
ssender = SmsSingleSender(settings.APPID, settings.APPKEY)
params = [code] # 当模板没有参数时,`params = []`
try:
result = ssender.send_with_param(86, telephone,
settings.TEMPLATE_ID, params, sign=settings.SMS_SIGN, extend="", ext="")
"""
'result': 0表示成功
result: {'result': 0, 'errmsg': 'OK', 'ext': '', 'sid': '2025dfawefwfjkiokjg984100', 'fee': 1, 'isocode': 'CN'}
"""
# print('result:', result)
if not result.get('result'):
return True
return False
except Exception as e:
utils.log.error(f'手机号:{telephone},短信发送失败,错误为:{e}')
if __name__ == '__main__':
test_phone = ['13333333333']
for phone in range(3):
send_sms(make_code(), telephone=test_phone[0])