Отправка SMS на PHP: Обзор API библиотек и примеры интеграции
Отправка SMS-сообщений остаётся востребованной функцией для веб-приложений: двухфакторная аутентификация, уведомления о заказах, маркетинговые рассылки. В PHP эту задачу решают через API сторонних сервисов. В этой статье мы разберём популярные библиотеки, способы их подключения и приведём рабочие примеры кода.
1. Популярные сервисы и их PHP библиотеки
Выбор провайдера зависит от региона, цены и требований к доставке. Рассмотрим три варианта:
- Twilio — международный лидер, предоставляет SDK для PHP (twilio/sdk). Подходит для глобальных проектов.
- SMS Aero — российский сервис с простым REST API и официальной PHP библиотекой.
- smsc.ru — ещё один популярный отечественный сервис с низкими тарифами и готовыми скриптами.
2. Установка через Composer
Большинство современных библиотек устанавливаются через Composer. Пример для Twilio:
composer require twilio/sdk
Для SMS Aero используйте:
composer require smsaero/smsaero-php
Если вы используете smsc.ru, можно обойтись без Composer — просто скопируйте их PHP класс с GitHub.
3. Пример отправки SMS через Twilio
Библиотека Twilio требует Account SID и Auth Token, которые вы получаете в личном кабинете.
<?php
require_once 'vendor/autoload.php';
use Twilio\Rest\Client;
// Ваши данные
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$token = "your_auth_token";
$twilio = new Client($sid, $token);
// Отправка SMS
$message = $twilio->messages
->create(
"+71234567890", // номер получателя
[
"from" => "+15017122661", // номер отправителя (куплен в Twilio)
"body" => "Привет! Это тестовое SMS от Twilio."
]
);
echo "Сообщение отправлено! SID: " . $message->sid;
?>
4. Отправка SMS через SMS Aero (REST API)
SMS Aero использует API ключ и логин. Библиотека предоставляет удобный интерфейс:
<?php
require_once 'vendor/autoload.php';
use Smsaero\Smsaero;
$client = new Smsaero('your_email@example.com', 'your_api_key');
// Отправка сообщения
$response = $client->send('71234567890', 'Тестовое сообщение от SMS Aero');
if ($response->success) {
echo "SMS отправлено. ID: " . $response->id;
} else {
echo "Ошибка: " . $response->error;
}
?>
5. Работа с smsc.ru (без Composer)
Для smsc.ru можно использовать прямые HTTP-запросы или их готовый класс. Простой пример через cURL:
<?php
$login = "your_login";
$password = "your_password";
$phones = "71234567890";
$message = "Привет от smsc.ru!";
$url = "https://smsc.ru/sys/send.php?login=" . urlencode($login) .
"&psw=" . urlencode($password) .
"&phones=" . urlencode($phones) .
"&mes=" . urlencode($message) .
"&fmt=3"; // fmt=3 — ответ в JSON
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['error'] ?? false) {
echo "Ошибка: " . $data['error'];
} else {
echo "SMS отправлено. ID: " . $data['id'];
}
?>
6. Обработка ошибок и логирование
При отправке SMS важно корректно обрабатывать ошибки. Типичные проблемы:
- Неверные учётные данные (401 Unauthorized).
- Недостаточно средств на балансе.
- Номер в чёрном списке.
- Превышение лимитов отправки.
Пример обработки исключений для Twilio:
<?php
try {
$message = $twilio->messages->create(...);
// логирование успеха
error_log("SMS отправлено: " . $message->sid);
} catch (Exception $e) {
// запись ошибки в лог
error_log("Ошибка отправки SMS: " . $e->getMessage());
// уведомление администратора
mail('admin@example.com', 'SMS Error', $e- Также в библиотеке
Работа с Excel в C++: библиотеки, примеры и инструменты
Валидация данных в TypeScript: Zod, Yup и другие инструменты
Отправка Email на C# (.NET) с помощью SmtpClient и MailKit
Работа с CSV в Go (Golang): полное руководство по парсингу и записи
JWT токены в Swift: работа с JSON Web Token на iOS/macOS