You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

smsgateway.me升级v4后PHP无法发送短信,API密钥传递存疑

我来帮你一步步解决这个问题——smsgateway.me v4版本的API密钥传递和短信发送逻辑确实和旧版本有不少变化,咱们从核心问题到具体实现逐个梳理:

1. 先搞懂v4版本的API密钥传递方式

这是升级后最容易踩的坑:v4不再支持把API密钥放在URL参数里,而是必须通过HTTP请求头传递。具体是用Authorization头,格式为Bearer 你的API密钥,这一步没做对的话,服务器根本无法识别你的授权信息,大概率会返回500或授权失败错误。

2. 完整PHP发送短信示例代码

下面是适配v4版本的PHP代码,用cURL实现(稳定性更好),已经包含了所有必要的配置:

<?php
// 替换成你在smsgateway.me后台获取的API密钥
$apiKey = "YOUR_REAL_API_KEY";
// v4版本的发送端点
$sendUrl = "https://smsgateway.me/api/v4/message/send";

// 准备要发送的短信数据,支持批量发送
$smsList = [
    [
        "phone_number" => "07791064781",
        "message" => "Hello World",
        "device_id" => 1  // 替换成你后台已激活的设备ID
    ],
    [
        "phone_number" => "07791064782",
        "message" => "Hello World",
        "device_id" => 2
    ]
];

// 初始化cURL请求
$curl = curl_init($sendUrl);
// 配置请求选项
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($smsList));
// 关键:设置请求头,必须包含授权和内容类型
curl_setopt($curl, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer {$apiKey}",
    "Content-Type: application/json"
]);

// 执行请求并获取结果
$response = curl_exec($curl);
$httpStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE);

// 关闭cURL资源
curl_close($curl);

// 输出结果用于排查
echo "HTTP状态码: {$httpStatus}\n";
echo "服务器响应: {$response}\n";
?>

注意:device_id必须是你在smsgateway.me后台已激活、在线的设备ID,设备离线或ID错误也会触发服务器内部错误。

3. Postman测试的正确配置步骤

你之前Postman返回500,大概率是没配置对请求头,按下面步骤调整:

  • 选择POST方法,输入端点URL:https://smsgateway.me/api/v4/message/send
  • 切换到Headers标签,添加两个必填头:
    • Key: Authorization,Value: Bearer 你的API密钥
    • Key: Content-Type,Value: application/json
  • 切换到Body标签,选择raw格式,下拉框选JSON,然后粘贴官方的请求示例:
[ { "phone_number": "07791064781", "message": "Hello World", "device_id": 1 }, { "phone_number": "07791064782", "message": "Hello World", "device_id": 2 } ]
  • 点击Send,现在应该能得到正常响应,而非500错误。
4. 500错误的额外排查点

如果按上面配置后还是报错,检查这几个地方:

  • 确认API密钥的权限:在smsgateway.me后台的API密钥管理页面,确保密钥有发送短信的权限
  • 检查JSON格式:请求体的JSON不能有语法错误(比如漏写引号、逗号)
  • 测试服务器连通性:在你的PHP服务器上执行curl -I https://smsgateway.me/api/v4/message/send,确认能正常访问端点
  • 设备状态:后台查看对应device_id的设备是否在线、是否绑定了正确的手机号

内容的提问来源于stack exchange,提问作者Ranjit Singh Shekhawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:19:58