SMS-Versand mit C# (.NET): Integration mit SMS-API-Diensten
In der modernen Welt bleibt das Versenden von SMS-Nachrichten eine gefragte Aufgabe für Benachrichtigungen, Zwei-Faktor-Authentifizierung und Kundenbenachrichtigungen. Im .NET-Ökosystem gibt es keine integrierte Bibliothek zum Versenden von SMS – alle Operationen werden über HTTP-Anfragen an die API externer SMS-Anbieter durchgeführt. In diesem Artikel werden wir erläutern, wie der SMS-Versand mit C# unter Verwendung von HttpClient organisiert wird, und Beispiele für die Integration mit gängigen Diensten betrachten.
Auswahl des SMS-Anbieters und wichtige Parameter
Vor Beginn der Arbeit müssen Sie sich bei einem der SMS-Dienste registrieren. Die beliebtesten sind: Twilio, Vonage (Nexmo), SMS Aero, СМСЦентр. Alle bieten eine REST-API an. Zum Versenden benötigen Sie:
- API-Schlüssel / Token – eine eindeutige Kennung Ihres Kontos.
- Secret / Passwort – ein geheimer Schlüssel zur Authentifizierung.
- Absendernummer (Sender ID) – eine Zeichenfolge, die beim Empfänger angezeigt wird (z. B. Ihre Marke).
- Empfängernummer – im internationalen Format (z. B. +71234567890).
Basisimplementierung in C# mit HttpClient
Für die Arbeit mit HTTP-Anfragen wird in .NET die Klasse System.Net.Http.HttpClient verwendet. Nachfolgend finden Sie ein Beispiel für den SMS-Versand über die Twilio-API (einer der beliebtesten Dienste).
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 für die Twilio-API string url = $"https://api.twilio.com/2010-04-01/Accounts/{_accountSid}/Messages.json";
// Formulardaten erstellen var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("To", to), new KeyValuePair<string, string>("From", from), new KeyValuePair<string, string>("Body", message) });
// Basic-Authentifizierung hinzufügen string auth = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{_accountSid}:{_authToken}")); _httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", auth);
// POST-Anfrage senden HttpResponseMessage response = await _httpClient.PostAsync(url, content);
if (response.IsSuccessStatusCode) { string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine($"SMS erfolgreich gesendet: {responseBody}"); } else { string error = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Fehler: {response.StatusCode} - {error}"); } }}Verwendung der Klasse
class Program{ static async Task Main(string[] args) { // Ersetzen Sie durch Ihre Daten aus dem Twilio-Konto string accountSid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; string authToken = "your_auth_token_here";
var sender = new SmsSender(accountSid, authToken); await sender.SendSmsAsync( to: "+71234567890", from: "+15017122661", // von Twilio zugewiesene Nummer message: "Hallo! Dies ist eine Test-SMS aus C#." ); }}Alternative Anbieter: Beispiel mit Vonage (Nexmo)
Für die Vonage-API wird ein anderes Formular verwendet