Envoi de SMS en C# (.NET) : Intégration avec l'API des services SMS via HttpClient

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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é

Recommendations