各种短信接口

各种短信接口

直接拿来用就可以了

云片网

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

猜你喜欢

转载自www.cnblogs.com/zc110/p/13393841.html