```html
方案2:使用
在Rust中发送短信:API和库概览
Rust是一种现代系统编程语言,兼具高性能和内存安全性。尽管Rust的生态系统比Python或JavaScript年轻,但它已经拥有与短信服务集成所需的所有工具。在本文中,我们将探讨如何通过流行的API和库从Rust应用程序发送短信。
发送短信的主要方法
从Rust发送短信有两种主要方式:
- 使用HTTP客户端 — 直接调用短信提供商的REST API(Twilio、Vonage、SMS-Центр等)
- 使用专门的crate — 将提供商API封装到方便的Rust接口中的现成库
方案1:通过Twilio API发送短信
Twilio是最流行的短信发送服务之一。要使用它,您需要reqwest(HTTP客户端)和serde(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"; // 在Twilio购买的号码 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: "来自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!("短信已发送!SID: {}, 状态: {}", sms_response.sid, sms_response.status);
Ok(())}方案2:使用twilio crate
为了更方便地使用Twilio,有一个专门的crate twilio。它提供了类型化的API并自动处理身份验证。
// 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!("消息已发送!SID: {}", message.sid); Ok(())}方案3:通过Vonage (Nexmo)发送短信
Vonage(前身为Nexmo)是另一个流行的提供商。要使用它,您可以使用vonage crate。
// 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", "来自Rust的问候!") .await?;
println!("消息已发送!ID: {}", response.message_id); Ok(())}
```