SMS-Versand mit Rust: Überblick über API und Bibliotheken
Rust ist eine moderne systemnahe Programmiersprache, die hohe Leistung mit Speichersicherheit kombiniert. Obwohl das Rust-Ökosystem jünger ist als das von Python oder JavaScript, enthält es bereits alle notwendigen Werkzeuge für die Integration mit SMS-Diensten. In diesem Artikel betrachten wir, wie man SMS-Nachrichten aus Rust-Anwendungen mit gängigen APIs und Bibliotheken versendet.
Grundlegende Ansätze zum SMS-Versand
Es gibt zwei Hauptwege, SMS aus Rust zu versenden:
- Verwendung eines HTTP-Clients — direkter Aufruf der REST-API des SMS-Anbieters (Twilio, Vonage, SMS-Center usw.)
- Verwendung spezialisierter Crates — fertige Bibliotheken, die die API des Anbieters in eine benutzerfreundliche Rust-Schnittstelle verpacken
Variante 1: SMS-Versand über die Twilio-API
Twilio ist einer der beliebtesten Dienste zum Versenden von SMS. Für die Arbeit damit benötigen Sie reqwest (HTTP-Client) und serde (Serialisierung/Deserialisierung von JSON).
// Cargo.toml[dependencies]reqwest = { version = "0.12", features = ["json"] }serde = { version = "1.0", features = ["derive"] }serde_json = "1.0"tokio = { version = "1", features = ["full"] }
// main.rsuse reqwest::Client;use serde::{Deserialize, Serialize};
#[derive(Serialize)]struct TwilioSmsRequest { To: String, From: String, Body: String,}
#[derive(Deserialize, Debug)]struct TwilioSmsResponse { sid: String, status: String,}
#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> { let account_sid = "YOUR_TWILIO_ACCOUNT_SID"; let auth_token = "YOUR_TWILIO_AUTH_TOKEN"; let from_number = "+1234567890"; // Bei Twilio gekaufte Nummer let to_number = "+0987654321";
let client = Client::new(); let url = format!("https://api.twilio.com/2010-04-01/Accounts/{}/Messages.json", account_sid);
let request_body = TwilioSmsRequest { To: to_number.to_string(), From: from_number.to_string(), Body: "Hallo aus Rust!".to_string(), };
let response = client .post(&url) .basic_auth(account_sid, Some(auth_token)) .form(&request_body) .send() .await?;
let sms_response: TwilioSmsResponse = response.json().await?; println!("SMS gesendet! SID: {}, Status: {}", sms_response.sid, sms_response.status);
Ok(())}Variante 2: Verwendung der Crate twilio
Für eine komfortablere Arbeit mit Twilio gibt es die spezialisierte Crate twilio. Sie bietet eine typisierte API und verarbeitet die Authentifizierung automatisch.
// Cargo.toml[dependencies]twilio = "0.5"tokio = { version = "1", features = ["full"] }
// main.rsuse twilio::Client;
#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> { let client = Client::new( "YOUR_TWILIO_ACCOUNT_SID", "YOUR_TWILIO_AUTH_TOKEN" );
let message = client .send_message("+1234567890", "+0987654321", "Hello from Rust!") .await?;
println!("Nachricht gesendet! SID: {}", message.sid); Ok(())}Variante 3: SMS-Versand über Vonage (Nexmo)
Vonage (ehemals Nexmo) ist ein weiterer beliebter Anbieter. Für die Arbeit damit kann die Crate vonage verwendet werden.
// Cargo.toml[dependencies]vonage = "0.2"tokio = { version = "1", features = ["full"] }
// main.rsuse vonage::VonageClient;
#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> { let client = VonageClient::new( "YOUR_VONAGE_API_KEY", "YOUR_VONAGE_API_SECRET" );
let response = client .send_sms("VonageAPI", "79001234567", "Hallo aus Rust!") Auch in der Bibliothek
Zod — leistungsstarke Bibliothek zur Datenvalidierung in TypeScript
Logging für Swift (iOS/macOS): Die besten Bibliotheken und Lösungen
HTML-Parsing in C# (.NET): Bibliotheken HtmlAgilityPack und AngleSharp