Отправка SMS на PHP: обзор API библиотек и готовых решений
В современных веб-приложениях отправка SMS-сообщений остаётся востребованной функцией: подтверждение регистрации, двухфакторная аутентификация, уведомления о статусе заказа. В этой статье мы разберём, как реализовать отправку SMS на PHP с помощью популярных API-библиотек и сервисов. Рассмотрим как официальные SDK, так и лёгкие решения на cURL.
1. Выбор SMS-провайдера и библиотеки
Перед началом работы необходимо зарегистрироваться в одном из SMS-сервисов и получить API-ключ. Для PHP существует несколько проверенных вариантов:
- sms.ru – популярный российский сервис с простым API и официальной PHP-библиотекой.
- Twilio – международный гигант с мощным SDK для PHP (twilio/sdk).
- ClickSend – универсальный сервис с поддержкой REST API.
- Простой cURL-класс – если не хотите подключать внешние зависимости.
2. Установка библиотек через Composer
Для работы с Twilio или ClickSend удобнее всего использовать Composer. Пример установки:
composer require twilio/sdk
composer require clicksend/clicksend-php
Для sms.ru официальная библиотека также устанавливается через Composer:
composer require smsru/smsru
Если вы предпочитаете не использовать менеджер зависимостей, можно скачать PHP-файлы вручную с GitHub или написать свой класс на cURL.
3. Пример отправки SMS через sms.ru
Сервис sms.ru предоставляет простой и понятный API. Ниже приведён пример отправки сообщения с использованием официальной библиотеки:
<?php
require_once 'vendor/autoload.php';
use SMSRU\SMSRU;
$sms = new SMSRU('ВАШ_API_КЛЮЧ');
$data = new stdClass();
$data->to = '79123456789'; // Номер получателя
$data->text = 'Тестовое сообщение'; // Текст SMS
$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. Отправка SMS через Twilio SDK
Twilio – один из самых надёжных сервисов для международной отправки. Пример кода на PHP:
<?php
require_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 поддерживает двустороннюю связь, вебхуки и проверку статуса доставки.
5. Реализация без сторонних библиотек (cURL)
Если вы не хотите подключать Composer, можно написать универсальную функцию на cURL. Пример для sms.ru:
<?php
function 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('ВАШ_API_КЛЮЧ', '79123456789', 'Тест через cURL');
if ($result['status'] == 'OK') {
echo 'SMS отправлена';
} else {
echo 'Ошибка: ' . $result['status_text'];
}
?>
Такой подход подходит для быстрой интеграции без дополнительных зависимостей.
Также в библиотеке
Тестирование в C++: обзор фреймворков и инструментов (Google Test, Catch2, doctest)
SpriteKit для Swift: полное руководство с примерами
Планировщик задач PHP: полное руководство по cron-задачам и Task Scheduler
Отправка email на Java: библиотека Jakarta Mail (JavaMail)
Работа с изображениями в TypeScript: библиотеки, инструменты и примеры кода