Envoi de SMS en C# (.NET) : Intégration avec l'API des services SMS
Dans le monde moderne, l'envoi de messages SMS reste une tâche essentielle pour les notifications, l'authentification à deux facteurs et les alertes clients. Dans l'écosystème .NET, il n'existe pas de bibliothèque intégrée pour l'envoi de SMS — toutes les opérations sont effectuées via des requêtes HTTP vers l'API de fournisseurs SMS tiers. Dans cet article, nous allons voir comment organiser l'envoi de SMS en C# en utilisant HttpClient, et examiner des exemples d'intégration avec des services populaires.
Choix du fournisseur SMS et paramètres clés
Avant de commencer, vous devez vous inscrire auprès d'un service SMS. Les plus populaires sont : Twilio, Vonage (Nexmo), SMS Aero, СМСЦентр. Tous fournissent une API REST. Pour l'envoi, vous aurez besoin de :
- Clé API / jeton — un identifiant unique de votre compte.
- Secret / mot de passe — une clé secrète pour l'authentification.
- Numéro de l'expéditeur (Sender ID) — la chaîne qui s'affichera chez le destinataire (par exemple, votre marque).
- Numéro du destinataire — au format international (par exemple, +71234567890).
Implémentation de base en C# avec HttpClient
Pour travailler avec les requêtes HTTP dans .NET, on utilise la classe System.Net.Http.HttpClient. Voici un exemple d'envoi de SMS via l'API Twilio (l'un des services les plus populaires).
using System;using System.Net.Http;using System.Text;using System.Threading.Tasks;
public class SmsSender{ private readonly HttpClient _httpClient; private readonly string _accountSid; private readonly string _authToken;
public SmsSender(string accountSid, string authToken) { _accountSid = accountSid; _authToken = authToken; _httpClient = new HttpClient(); }
public async Task SendSmsAsync(string to, string from, string message) { // URL pour l'API Twilio string url = $"https://api.twilio.com/2010-04-01/Accounts/{_accountSid}/Messages.json";
// Création des données du formulaire var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("To", to), new KeyValuePair<string, string>("From", from), new KeyValuePair<string, string>("Body", message) });
// Ajout de l'authentification Basic string auth = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{_accountSid}:{_authToken}")); _httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", auth);
// Envoi de la requête POST HttpResponseMessage response = await _httpClient.PostAsync(url, content);
if (response.IsSuccessStatusCode) { string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine($"SMS envoyé avec succès : {responseBody}"); } else { string error = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Erreur : {response.StatusCode} - {error}"); } }}Utilisation de la classe
class Program{ static async Task Main(string[] args) { // Remplacez par vos données depuis le tableau de bord Twilio string accountSid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; string authToken = "your_auth_token_here";
var sender = new SmsSender(accountSid, authToken); await sender.SendSmsAsync( to: "+71234567890", from: "+15017122661", // numéro attribué par Twilio message: "Bonjour ! Ceci est un SMS de test depuis C#." ); }}Fournisseurs alternatifs : exemple avec Vonage (Nexmo)
Pour l'API Vonage, un autre formulaire est utilisé
Aussi dans la bibliothèque
Journalisation en Rust : aperçu des meilleures bibliothèques et solutions pour votre projet
Métriques Prometheus en Swift : surveillance des applications iOS/macOS
Cryptographie en Java : chiffrement et hachage des données