Envoi de SMS en PHP : Aperçu des bibliothèques API et exemples d'intégration
L'envoi de messages SMS reste une fonctionnalité demandée pour les applications web : authentification à deux facteurs, notifications de commandes, campagnes marketing. En PHP, cette tâche est réalisée via l'API de services tiers. Dans cet article, nous examinerons les bibliothèques populaires, les méthodes pour les connecter et fournirons des exemples de code fonctionnels.
1. Services populaires et leurs bibliothèques PHP
Le choix du fournisseur dépend de la région, du prix et des exigences de livraison. Examinons trois options :
- Twilio — leader international, fournit un SDK pour PHP (twilio/sdk). Convient aux projets mondiaux.
- SMS Aero — service russe avec une API REST simple et une bibliothèque PHP officielle.
- smsc.ru — un autre service national populaire avec des tarifs bas et des scripts prêts à l'emploi.
2. Installation via Composer
La plupart des bibliothèques modernes s'installent via Composer. Exemple pour Twilio :
composer require twilio/sdkPour SMS Aero, utilisez :
composer require smsaero/smsaero-phpSi vous utilisez smsc.ru, vous pouvez vous passer de Composer — copiez simplement leur classe PHP depuis GitHub.
3. Exemple d'envoi de SMS via Twilio
La bibliothèque Twilio nécessite un Account SID et un Auth Token, que vous obtenez dans votre tableau de bord.
<?phprequire_once 'vendor/autoload.php';
use Twilio\\Rest\\Client;
// Vos données$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";$token = "your_auth_token";$twilio = new Client($sid, $token);
// Envoi de SMS$message = $twilio->messages ->create( "+71234567890", // numéro du destinataire [ "from" => "+15017122661", // numéro de l'expéditeur (acheté chez Twilio) "body" => "Bonjour ! Ceci est un SMS de test de Twilio." ] );
echo "Message envoyé ! SID : " . $message->sid;?>4. Envoi de SMS via SMS Aero (API REST)
SMS Aero utilise une clé API et un identifiant. La bibliothèque offre une interface pratique :
<?phprequire_once 'vendor/autoload.php';
use Smsaero\\Smsaero;
$client = new Smsaero('your_email@example.com', 'your_api_key');
// Envoi du message$response = $client->send('71234567890', 'Message de test de SMS Aero');
if ($response->success) { echo "SMS envoyé. ID : " . $response->id;} else { echo "Erreur : " . $response->error;}?>5. Travailler avec smsc.ru (sans Composer)
Pour smsc.ru, vous pouvez utiliser des requêtes HTTP directes ou leur classe prête à l'emploi. Exemple simple via cURL :
<?php$login = "your_login";$password = "your_password";$phones = "71234567890";$message = "Bonjour de 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 — réponse en 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 "Erreur : " . $data['error'];} else { echo "SMS envoyé. ID : " . $data['id'];}?>6. Gestion des erreurs et journalisation
Lors de l'envoi de SMS, il est important de gérer correctement les erreurs. Problèmes typiques :
- Identifiants incorrects (401 Non autorisé).
- Solde insuffisant.
- Numéro sur liste noire.
- Dépassement des limites d'envoi.
Exemple de gestion des exceptions pour Twilio :
<?phptry { $message = $twilio->messages->create(...); // journalisation du succès error_log("SMS envoyé : " . $message->sid);} catch (Exception $e) { // journalisation de l'erreur error_log("Erreur d'envoi SMS : " . $e->getMessage()); echo "Erreur : " . $e->getMessage();}?>7. Conclusion
L'intégration de l'envoi de SMS en PHP est simple grâce aux bibliothèques prêtes à l'emploi et aux API. Choisissez un fournisseur adapté à vos tâches, installez la bibliothèque via Composer et gérez les erreurs. Les exemples de code ci-dessus vous aideront à démarrer rapidement.
Aussi dans la bibliothèque
Nodemailer — envoi d'email en TypeScript
Travailler avec YAML en C++ : bibliothèques yaml-cpp et rapidyaml
Envoi de SMS en C# (.NET) : Intégration avec l'API des services SMS
Utilisation de GraphQL en Swift : bibliothèques Apollo et Relay pour iOS/macOS
Detekt pour Kotlin : guide complet avec exemples