Parcel Wing Rust SDK
Official Rust SDK for the Parcel Wing API.
[dependencies]
parcelwing = "0.1"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
Send an email
use parcelwing::{Client, EmailSendRequest};
#[tokio::main]
async fn main() -> Result<(), parcelwing::Error> {
let client = Client::new("pw_live_your_api_key_here")?;
let emails = client
.emails()
.send(
EmailSendRequest::new(
"Parcel Wing <hello@yourdomain.com>",
"you@example.com",
)
.subject("Hello from Parcel Wing")
.html("<strong>It works!</strong>")
.text("It works!"),
)
.await?;
println!("{emails:#?}");
Ok(())
}
Configuration
use std::time::Duration;
use parcelwing::{Client, ClientOptions};
let client = Client::with_options(ClientOptions {
api_key: "pw_live_your_api_key_here".to_string(),
base_url: Some("https://parcelwing.com".to_string()),
timeout: Some(Duration::from_secs(30)),
default_headers: Default::default(),
})?;
Use base_url to point the SDK at a local Parcel Wing instance during development.
Errors
API and network failures return parcelwing::Error.
match client.emails().send(request).await {
Ok(emails) => println!("Queued: {emails:#?}"),
Err(parcelwing::Error::Api(api_error)) => {
eprintln!("Parcel Wing API error: {} ({:?})", api_error.message, api_error.code);
}
Err(error) => eprintln!("Request failed: {error}"),
}
Local development
cargo test
cargo fmt
cargo clippy --all-targets --all-features
Publishing
This crate is intended to be published to crates.io as:
cargo publish
Once published, users can install it with:
parcelwing = "0.1"