Envio de SMS em PHP: visão geral de bibliotecas de API e soluções prontas
Em aplicações web modernas, o envio de mensagens SMS continua sendo uma função muito requisitada: confirmação de registro, autenticação de dois fatores, notificações sobre status de pedidos. Neste artigo, vamos analisar como implementar o envio de SMS em PHP usando bibliotecas de API e serviços populares. Abordaremos tanto SDKs oficiais quanto soluções leves em cURL.
1. Escolha do provedor de SMS e da biblioteca
Antes de começar, é necessário se registrar em um dos serviços de SMS e obter uma chave de API. Para PHP, existem várias opções testadas:
- sms.ru – serviço russo popular com API simples e biblioteca oficial para PHP.
- Twilio – gigante internacional com um poderoso SDK para PHP (twilio/sdk).
- ClickSend – serviço versátil com suporte a REST API.
- Classe cURL simples – se você não quiser incluir dependências externas.
2. Instalação de bibliotecas via Composer
Para trabalhar com Twilio ou ClickSend, o mais conveniente é usar o Composer. Exemplo de instalação:
composer require twilio/sdkcomposer require clicksend/clicksend-phpPara sms.ru, a biblioteca oficial também é instalada via Composer:
composer require smsru/smsruSe você preferir não usar um gerenciador de dependências, pode baixar os arquivos PHP manualmente do GitHub ou escrever sua própria classe em cURL.
3. Exemplo de envio de SMS via sms.ru
O serviço sms.ru fornece uma API simples e clara. Abaixo está um exemplo de envio de mensagem usando a biblioteca oficial:
<?phprequire_once 'vendor/autoload.php';
use SMSRU\\SMSRU;
$sms = new SMSRU('SUA_CHAVE_API');
$data = new stdClass();$data->to = '79123456789'; // Número do destinatário$data->text = 'Mensagem de teste'; // Texto do SMS$data->from = 'MySite'; // Nome do remetente (assinatura)
$response = $sms->send_one($data);
if ($response->status == 'OK') { echo "Mensagem enviada. ID: " . $response->sms_id;} else { echo "Erro: " . $response->status_text;}?>Importante: previamente, no painel de controle do sms.ru, é necessário registrar a assinatura do remetente e adicionar saldo.
4. Envio de SMS via Twilio SDK
Twilio é um dos serviços mais confiáveis para envio internacional. Exemplo de código em PHP:
<?phprequire_once 'vendor/autoload.php';
use Twilio\\Rest\\Client;
$account_sid = 'SEU_ACCOUNT_SID';$auth_token = 'SEU_AUTH_TOKEN';$twilio_number = '+1234567890'; // Número obtido no Twilio
$client = new Client($account_sid, $auth_token);
$message = $client->messages->create( '+79123456789', // Número do destinatário [ 'from' => $twilio_number, 'body' => 'Olá do Twilio e PHP!' ]);
echo "Enviado com ID: " . $message->sid;?>Twilio suporta comunicação bidirecional, webhooks e verificação de status de entrega.
5. Implementação sem bibliotecas externas (cURL)
Se você não quiser usar o Composer, pode escrever uma função universal em cURL. Exemplo para 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(' Também na biblioteca
ORM para PHP: comparação entre Doctrine, Eloquent e Cycle — exemplos de código
Ardalis.SmartEnum para C# (.NET): guia completo com exemplos
ring para Rust: guia completo com exemplos práticos