Отправка SMS на PHP: Обзор API библиотек для интеграции

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Отправка 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-                    

Рекомендаций