• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

免费发送短信

武飞扬头像
MrXue_
帮助1

大家好,今天给大家介绍一个可以免费发送短信的方法,喜欢记得点赞、一定要收藏

介绍

使用 泉鸣网络 的API接口进行短信发送

兼容性和适配

请根据自己的需求,选择对应语言的SDK。

语言/系统 发送请求 签名 多模板 多参数模板
Python
PHP ×
JS
Java
Zkey ×
魔方
WordPress
  • (√:已支持且适配,–:暂未开发,×:不支持或待验证)

SDK/插件;使用代码

使用代码

python

sms = SDK()  # 实例化SDK
# 这里演示了一个简单的验证码功能
check_code = random.randint(100000, 999999)  # 生成验证码
results, info = sms.send('接受者的手机号', sms.def_model_id, {'code': check_code})  # 发送
print(info)

PHP

$sms = new QuanmSmsSDK();
$result = $sms->sendSms('15666666666', ['code' => '1234']);
var_dump($result);

ZKey

11 => [  // 下载地址 https://gitee.com/chengdu-quanming-network/quanmwl-sms-sdk/tree/master/SMS-SDK/zKey-SDK
  "className": "QuanmSmsSDK",
  "channelName": "泉鸣短信",
]

SDK/插件

打包下载:点击跳转

python

# -*- coding: utf-8 -*-
# author:Tiper(邱鹏)
# 文件所属项目:QDC SMS SDK
# 文件描述:QuanmSMS SDK (泉鸣开放平台sms接口SDK),包含执行短信业务所需的方法
# Python版本要求:Python3及以上(可自行修改兼容Python2)
# 官网:dev.quanmwl.com
# 发布日期:2022-7-31

import random
import hashlib
import requests

hl = hashlib.md5()


class SDK:
    def __init__(self):
        # 请开发者修改下列三行配置信息
        self.open_id = '修改为自己的'   # 开发者ID
        self.api_key = '修改为自己的'   # 能力列表的apiKey
        self.def_model_id = 0    # 默认情况下使用的模板ID
        self.api_host = 'http://dev.quanmwl.com'  # Api Host【默认,api支持https,如有需要请修改】

        self.state_code = {
            '200': '短信发送成功',
            '201': '表单信息或接口信息有误',
            '202': '信息重复',
            '203': '服务器异常,请稍后重试',
            '204': '找不到数据',
            '205': '本次请求不安全',
            '206': '接口版本过低',
            '207': '余额不足',
            '208': '验签失败',
            '209': '功能被禁用',
            '210': '账户被禁用',
            '211': '参数过长',
            '212': '权限不足',
            '213': '参数调用状态异常',
            '214': '版本过高',
            '215': '内容受限',
            '216': '内容违规',
            '???': '严重未知错误,请联系服务提供商'
        }
        # 更多状态:https://quanmwl.yuque.com/docs/share/9fbd5429-6575-403d-8a3d-7081b2977eda?#8sz4 《平台状态码处理指引》

    def sign(self, _tel, model_id, model_args):
        # type:(str, str, str) -> str
        """
        签名方法
        :param _tel: 接收者手机号
        :param model_id: 短信模板ID
        :param model_args: 短信模板变量参数字典
        :return:
        """
        server_sign_data = f"{self.open_id}{self.api_key}{_tel}{model_id}{model_args}"
        hl.update(server_sign_data.encode("utf-8"))
        return hl.hexdigest()

    def send(self, tel, model_id, model_args):
        # type:(str, int, dict) -> tuple[bool, str]
        """
        发送短信
        :param tel: 接收者手机号
        :param model_id: 短信模板ID
        :param model_args: 短信模板变量参数字典
        :return:
        """
        headers = {
            'User-Agent': 'QuanmOpenApi_Python_SDK-Sms_0.1.0',  # 非必要,但推荐传入用于兼容性统计
        }

        data = {
            'openID': self.open_id,
            'tel': tel,
            'sign': self.sign(tel, str(model_id), str(model_args).replace(' ', '')),
            'model_id': model_id,
            'model_args': f'{model_args}'
        }
        try:
            response = requests.post(f'{self.api_host}/v1/sms', headers=headers, data=data)
            # http_status = response.status_code  几乎可以不依赖http状态码,如有需要请自行修改
        except:
            return False, 'Server Error'
        _mess = 'Not Find'
        if response is None or 'HTML>' in response.text:
            print("Requests Fail")
            return False, _mess
        else:
            redata = eval(response.text)

            http_state = response.status_code
            if http_state != 200 and 'state' not in redata:
                return False, _mess

            api_state = redata['state']
            if api_state in self.state_code:
                _mess = self.state_code[api_state]
            if api_state == '200':
                return True, _mess
            else:
                return True, _mess


if __name__ == '__main__':
    sms = SDK()  # 实例化SDK
    # 这里演示了一个简单的验证码功能
    check_code = random.randint(100000, 999999)  # 生成验证码
    results, info = sms.send('接受者的手机号', sms.def_model_id, {'code': check_code})  # 发送
    print(info)

学新通

PHP

<?php
/**
 * 泉鸣短信接口SDK
 * author:安然_
 * update: 2022-9-18(修复)
 * PHP版本要求:php5.6及以上版本(其他版本请自行修改适配)
 * 官网:dev.quanmwl.com
 */

// 示例代码(修改29-30行的配置后可解除注释进行测试)
$sms = new QuanmSmsSDK();
$result = $sms->sendSms('15666666666', ['code' => '1234']);
var_dump($result);

class QuanmSmsSDK
{
    //泉明开放平台openId
    private $appId;
    //泉明开放平台apiKey
    private $apiKey;
    //泉明开放平台接口地址
    private $apiUrl;
    //泉明开放平台短信模板ID
    private $templateId;

    public function __construct()
    {

        $this->appId  = '';  // 从平台控制面板获取
        $this->apiKey  = '';  // 从平台控制面板-能力管理-短信接口(SMS)页面开通后获取
        $this->apiUrl   = 'http://dev.quanmwl.com/'; // 接口网关地址(host)一般不需要修改,已支持https,如有需要请自行修改
        $this->templateId  = '0';  //短信模板ID,从平台申请,SDK默认使用0号公用模板测试
    }

    private $stateCode = [
        200 => '短信发送成功',
        201 => '表单信息或接口信息有误',
        202 => '信息重复',
        203 => '服务器异常,请稍后重拾',
        204 => '找不到数据',
        205 => '本次请求不安全',
        206 => '接口版本过低',
        207 => '余额不足',
        208 => '验签失败',
        209 => '功能被禁用',
        210 => '账户被禁用',
        211 => '参数过长',
        212 => '权限不足',
        213 => '参数调用状态异常',
        214 => '版本过高',
        215 => '内容受限',
        216 => '内容违规',
        '???' => '严重未知错误,请联系服务提供商'
    ];

    public function sendSms($tel, $args = []): array
    {
        $data = [
            'openID' => $this->appId,
            'tel' => $tel,
            'model_args' => json_encode($args),
            'sign' => $this->generateSign($tel,json_encode($args)),
            'model_id' => $this->templateId

        ];
        return $this->curlPost('v1/sms', $data);
    }

    private function generateSign($mobile,$model_args)
    {
        return md5($this->appId.$this->apiKey.$mobile.$this->templateId.$model_args);
    }

    private function curlPost($path, $body)
    {
        $curl = curl_init();
        $resquest_api = $this->apiUrl . $path;
        curl_setopt($curl, CURLOPT_URL, $resquest_api);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl, CURLOPT_NOBODY, FALSE);
        $response = curl_exec($curl);
        curl_close($curl);
        $response = json_decode($response, true);
        if (array_key_exists($response['state'], $this->stateCode)) {
            return ['code' => $response['state'], 'msg' => $response['mess']];
        } else {
            return ['code' => '-1', 'msg' => '请求结果错误,请联系开发人员核实'];
        }
    }

}
学新通

JS

文件下载地址:点击跳转(https://gitee.com/chengdu-quanming-network/sms-gsa-web/tree/master/)

ZKey

<?php
/**
 * 泉鸣短信接口SDK
 * author:安然_
 * 文件所属项目:QDC SMS SDK
 * 适用API版本:V1//Beta
 * 官网:dev.quanmwl.com
 * 发布日期:2022-8-1
 * 提示:因zkey短信机制原因,我们强烈建议您通过控制台中链接,加入官方QQ群,以便及时更新新版SDK,取得新规则下的正则
*/

namespace Niaoyun\Common\Sms;

class QuanmSmsSDK extends BaseSms implements ISms
{
    //开放平台openId
    private $appId;
    //开放平台apiKey
    private $apiKey;
    //开放平台接口地址
    private $apiUrl;
    //开放平台短信模板ID
    private $templateId;

    public function __construct($appId, $apiKey, $apiUrl, $templateId)
    {

        $this->appId = '修改为自己的OpenID';  // 控制台 (A1轮测试中需要向官方群群主申请开通获取)
        $this->apiKey = '修改为自己的ApiKey'; // 控制台-能力管理-短信接口(SMS) (A1轮测试中需要向官方群群主申请开通获取)
        $this->apiUrl = 'http://dev.quanmwl.com/';
        $this->templateId = '0';  // 平台申请到的模板ID (A1轮测试中需要向官方群群主申请开通获取)
    }


    public function send($tel, $content, $id = null, $type = 2, $param = [], $handleResult = true)
    {
        preg_match('/\d /', $content, $number);
        $data = [
            'openID' => $this->appId,
            'tel' => $tel,
            'sign' => $this->generateSign($tel),
            'model_id' => $this->templateId,
            'model_args' => json_encode(['code' => $number[0]])
        ];
        $result = $this->curlPost('v1/sms', $data);
        if ($result['state'] = 200) {
            return true;
        } else {
            return false;
        }
    }


    private function generateSign($mobile)
    {
        return md5('sign-' . $this->appId . $this->apiKey . $mobile);
    }

    private function curlPost($path, $body)
    {
        $curl = curl_init();
        $resquest_api = $this->apiUrl . $path;
        curl_setopt($curl, CURLOPT_URL, $resquest_api);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl, CURLOPT_NOBODY, FALSE);
        $response = curl_exec($curl);
        curl_close($curl);
        return json_decode($response, true);

    }

}
学新通

泉鸣网络

注册

进入 泉鸣网络开放平台
如果没有账号点击注册进行注册

登录

注册后会自动登录
如以有账号点击登录

获取额度

方法1:每日签到(免费)

每天点击签到可以领取1~5的短信额度
tips:有时候可能会签到失败,需重复签到

方法2:购买

可以在用户首页进行账号充值或者进入SMS短信进行单独购买

更多方法

点击跳转官方文档

结尾

官方文档 点击跳转

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgffgcb
系列文章
更多 icon
同类精品
更多 icon
继续加载