使用PHP发送短信:sms.ru及其他服务的API库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

使用PHP发送短信:API库与现成解决方案概览



在现代Web应用中,发送短信功能仍然很受欢迎:注册确认、双因素认证、订单状态通知。在本文中,我们将介绍如何使用流行的API库和服务,通过PHP实现短信发送。我们将讨论官方SDK以及基于cURL的轻量级解决方案。



1. 选择短信服务商和库



开始之前,您需要在某个短信服务中注册并获取API密钥。对于PHP,有几种经过验证的选择:



  • sms.ru – 流行的俄罗斯服务,API简单,并提供官方PHP库。
  • Twilio – 国际巨头,拥有强大的PHP SDK(twilio/sdk)。
  • ClickSend – 通用服务,支持REST API。
  • 简单的cURL类 – 如果您不想引入外部依赖。


2. 通过Composer安装库



使用Twilio或ClickSend时,最方便的方式是通过Composer。安装示例:



composer require twilio/sdkcomposer require clicksend/clicksend-php


对于sms.ru,官方库也可以通过Composer安装:



composer require smsru/smsru


如果您不想使用依赖管理器,可以手动从GitHub下载PHP文件,或者自己编写一个基于cURL的类。



3. 通过sms.ru发送短信示例



sms.ru服务提供了简单易懂的API。以下是使用官方库发送消息的示例:



<?phprequire_once 'vendor/autoload.php';

use SMSRU\\SMSRU;

$sms = new SMSRU('您的_API_密钥');

$data = new stdClass();$data->to = '79123456789'; // 接收者号码$data->text = '测试消息'; // 短信内容$data->from = 'MySite'; // 发送者名称(签名)

$response = $sms->send_one($data);

if ($response->status == 'OK') { echo "消息已发送。ID: " . $response->sms_id;} else { echo "错误: " . $response->status_text;}?>


重要提示: 您需要先在sms.ru个人账户中注册发送者签名并充值余额。



4. 通过Twilio SDK发送短信



Twilio是国际发送中最可靠的服务之一。PHP代码示例:



<?phprequire_once 'vendor/autoload.php';

use Twilio\\Rest\\Client;

$account_sid = '您的_ACCOUNT_SID';$auth_token = '您的_AUTH_TOKEN';$twilio_number = '+1234567890'; // 从Twilio获取的号码

$client = new Client($account_sid, $auth_token);

$message = $client->messages->create( '+79123456789', // 接收者号码 [ 'from' => $twilio_number, 'body' => '来自Twilio和PHP的问候!' ]);

echo "已发送,ID: " . $message->sid;?>


Twilio支持双向通信、Webhook和送达状态检查。



5. 无需第三方库的实现(cURL)



如果您不想使用Composer,可以编写一个通用的cURL函数。以sms.ru为例:



<?phpfunction sendSms($api_key, $phone, $message) {    $url = 'https://sms.ru/sms/send';    $params = [        'api_id' => $api_key,        'to' => $phone,        'msg' => $message,        'json' => 1    ];

$ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch); curl_close($ch);

return json_decode($response, true);}

$result = sendSms('

推荐