因为项目在注册、登陆、找回密码 时须要发送短信验证的功能,咱们使用腾讯云短信作。python
为何要用腾讯云短信呢? 由于注册就送 100条免费短信 的额度。shell
注册一个腾讯云帐户,腾讯云中提供了不少功能:云服务器、云存储你、云直播、云短信等不少功能。小程序
注册地址:https://cloud.tencent.com/服务器
注册并要实名认证微信
建立应用并将应用中生成的
SDK AppID
和App Key
复制下来,以后经过python发送短信时须要用到。网络
在腾讯云短信签名时须要认证,认证须要填写签名类型:网站、APP、小程序、公众号,前三种须要提供企业资质等复杂的东西,我的公众号认证会比较便捷,因此推荐我的开发的话使用 公众号 进行签名。app
so,我们须要先
申请一个公众号
而后建立签名
网站
注册地址:https://mp.weixin.qq.com/3d
上述的准备工做作完中咱们开通相关服务并获取到以下几个值:
code
# 建立应用,获取到 appid 和 appkey # 建立签名,获取 签名内容 # 建立模板,获取 模板ID
接下来开始使用Python发送短信。
安装SDK
pip install qcloudsms_py
基于SDK发送短信
#!/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 def send_sms_single(phone_num, template_id, template_param_list): """ 单条发送短信 :param phone_num: 手机号 :param template_id: 腾讯云短信模板ID :param template_param_list: 短信模板所需参数列表,例如:【验证码:{1},描述:{2}】,则传递参数 [888,666]按顺序去格式化模板 :return: """ appid = 112142311 # 本身应用ID appkey = "8cc5b87123y423423412387930004" # 本身应用Key sms_sign = "Python之路" # 本身腾讯云建立签名时填写的签名内容(使用公众号的话这个值通常是公众号全称或简称) sender = SmsSingleSender(appid, appkey) try: response = sender.send_with_param(86, phone_num, template_id, template_param_list, sign=sms_sign) except HTTPError as e: response = {'result': 1000, 'errmsg': "网络异常发送失败"} 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 = 112142311 appkey = "8cc5b87123y423423412387930004" sms_sign = "Python之路" 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 if __name__ == '__main__': result1 = send_sms_single("15131255089", 548760, [666, ]) print(result1) result2 = send_sms_single( ["15131255089", "15131255089", "15131255089", ],548760, [999, ]) print(result2)
腾讯云短信后台能够进行 短信频率 的限制。
可是,因为咱们是免费用户因此没法进行设置,只能使用默认的配置(30秒发1条/1小时发5条/1天发10条)。