各种短信接口
直接拿来用就可以了
云片网
import json
import requests
from luffyapi.utils.logger import log
def get_code():
import random
s_code = \'\'
for i in range(4):
s_code += str(random.randint(0,9))
print(s_code)
return s_code
def send_single_sms(code, mobile):
from . import settings
# 发送单条短信
url = settings.url
text = f"您的验证码是{code}。如非本人操作,请忽略本短信"
apikey = settings.apikey
try:
res = requests.post(url, data={
"apikey": apikey,
"mobile": mobile,
"text": text
})
re_json = json.loads(res.text)
print(re_json)
re = re_json[\'code\']
if re == 53:
return False
else:
return True
except Exception as e:
log.error(\'手机号:%s,短信发送失败,错误为:%s\' % (mobile, str(e)))
# 这里我用日志捕获异常,如果不需要就try去掉
腾讯云
# 短信应用 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])
阿里云
# aliyun 短信服务基本配置参数
accessKeyId = \'xxxxxxxxxxxxxxxxx\'
accessSecret = \'xxxxxxxxxxxxxxxxxxxxxxx\'
RegionId = \'cn-hangzhou\'
request_type = \'POST\'
SignName = \'xxxxxxx\'
TemplateCode = \'xxxxxxxxxxxxxxxxx\'
import string
import random
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from . import settings
def gen_code():
code = random.choices(string.digits, k=4)
return \'\'.join(code)
def send_sms(phone, code):
print(\'code\', code)
client = AcsClient(
settings.accessKeyId,
settings.accessSecret,
settings.RegionId
)
request = CommonRequest()
request.set_accept_format(\'json\')
request.set_domain(\'dysmsapi.aliyuncs.com\')
request.set_method(settings.request_type)
request.set_protocol_type(\'https\') # https | http
request.set_version(\'2017-05-25\')
request.set_action_name(settings.SignName)
request.add_query_param(\'RegionId\', settings.RegionId)
request.add_query_param(\'PhoneNumbers\', phone)
request.add_query_param(\'SignName\', settings.SignName)
request.add_query_param(\'TemplateCode\', settings.TemplateCode)
request.add_query_param(\'TemplateParam\', "{\"code\": \"12345678\"}")
response = client.do_action_with_exception(request)
return True