SMS-Versand mit C# (.NET): Vollständige Anleitung zur API-Integration
In der modernen Welt bleiben SMS-Benachrichtigungen eine der zuverlässigsten Methoden der Benutzerkommunikation. Im C# (.NET)-Ökosystem gibt es viele Ansätze zum Versenden von Nachrichten – von direkten HTTP-Anfragen bis hin zur Nutzung spezialisierter NuGet-Pakete. In diesem Artikel werden wir untersuchen, wie man den SMS-Versand über beliebte Dienste (Twilio, sms.ru, Smsc) am Beispiel einer reinen Implementierung mit HttpClient einrichtet, und auch eine fertige Bibliothek für die Arbeit mit russischen Anbietern betrachten.
Wahl des Ansatzes: Bibliothek oder reines HTTP?
Für den SMS-Versand in C# gibt es zwei Hauptwege:
- Verwendung des offiziellen SDK (z. B. Twilio für .NET) – bietet eine typisierte Schnittstelle, integrierte Fehlerbehandlung und Dokumentation.
- Direkte Arbeit mit der REST-API über HttpClient – vollständige Kontrolle über die Anfrage, minimale Abhängigkeiten, Möglichkeit zur Arbeit mit jedem Anbieter.
Die zweite Option ist für Bildungszwecke und Projekte, die Flexibilität erfordern, vorzuziehen. Betrachten wir sie im Detail.
Basisimplementierung des SMS-Versands über HTTP-API
Erstellen wir eine Klasse SmsService, die Nachrichten über die API von sms.ru (oder einem anderen Dienst mit ähnlichem Format) sendet.
using System;using System.Net.Http;using System.Threading.Tasks;
public class SmsService{ private readonly HttpClient _httpClient; private readonly string _apiKey;
public SmsService(string apiKey) { _httpClient = new HttpClient(); _apiKey = apiKey; }
public async Task<string> SendSmsAsync(string phone, string message) { var url = $"https://sms.ru/sms/send?api_id={_apiKey}&to={phone}&msg={Uri.EscapeDataString(message)}&json=1"; var response = await _httpClient.GetAsync(url); return await response.Content.ReadAsStringAsync(); }}Verwendung:
var sms = new SmsService("IHR_API_SCHLÜSSEL");string result = await sms.SendSmsAsync("+79123456789", "Hallo! Dies ist eine Testnachricht.");Console.WriteLine(result);Optimierung: Asynchronität und Fehlerbehandlung
In einem realen Projekt müssen Nummernvalidierung, Wiederholungsversuche bei Fehlern und Protokollierung hinzugefügt werden. Verbesserte Version:
public async Task<SmsResult> SendSmsAsync(string phone, string message){ try { if (string.IsNullOrWhiteSpace(phone) || phone.Length < 10) return new SmsResult { Success = false, Error = "Ungültiges Nummernformat" };
var url = $"https://sms.ru/sms/send?api_id={_apiKey}&to={phone}&msg={Uri.EscapeDataString(message)}&json=1"; var response = await _httpClient.GetAsync(url); var json = await response.Content.ReadAsStringAsync();
// JSON-Parsing (System.Text.Json kann verwendet werden) var result = JsonSerializer.Deserialize<SmsApiResponse>(json); return new SmsResult { Success = result?.Status == "OK", Response = json }; } catch (HttpRequestException ex) { return new SmsResult { Success = false, Error = $"Netzwerkfehler: {ex.Message}" }; }}Erstellen Sie für das Parsen der Antwort ein einfaches Modell:
public class SmsApiResponse{ public string Status { get; set; } public int Balance { get; set; }}Fertige Bibliothek: Twilio für .NET
Wenn Sie Produktionsreife benötigen, verwenden Sie das Twilio SDK (NuGet: Twilio). Beispiel:
using Twilio;using Twilio.Rest.Api.V2010.Account;
TwilioClient.Init("ACCOUNT_SID", "AUTH_TOKEN");
var message = MessageResource.Create( body: "Hallo von C#!", from: new PhoneNumber("+1234567890"), to: new PhoneNumber("+79123456789"));
Console.WriteL Auch in der Bibliothek
Arbeiten mit Bildern in Java: Vom Lesen bis zur Verarbeitung
Objektserialisierung in TypeScript: Bibliotheken, Methoden und Beispiele
Arbeiten mit ZIP-Archiven in PHP: ZipArchive und Bibliotheken zur Komprimierung
Tonic für Rust: Vollständiges Tutorial mit Beispielen