大家好,今天给大家介绍一个可以免费发送短信的方法,喜欢记得点赞、一定要收藏
目录
介绍
使用 泉鸣网络 的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短信进行单独购买
更多方法
结尾
官方文档 点击跳转