コンテンツにスキップ

Rust

Cargo.toml
[dependencies]
reqwest = { version = "0.12", features = ["json"] }
serde_json = "1"
tokio = { version = "1", features = ["full"] }
src/main.rs
use serde_json::{json, Value};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let key = env::var("SPACEPOST_API_KEY")?;
let res = reqwest::Client::new()
.post("https://api.spacepost.dev/emails")
.bearer_auth(key)
.header("Idempotency-Key", "welcome-user-42")
.json(&json!({
"from": "Acme <hello@acme.com>",
"to": ["delivered@test.spacepost.dev"],
"subject": "Hello from Rust",
"html": "<p>It works.</p>"
}))
.send()
.await?;
let status = res.status();
let body: Value = res.json().await?;
if !status.is_success() {
// { "statusCode": 422, "name": "validation_error", "message": "..." }
return Err(format!("{}: {}", body["name"], body["message"]).into());
}
println!("sent {}", body["id"]);
Ok(())
}