axene_mailer/lib.rs
1//! Async Rust SDK for the [Axene Mailer](https://mail.axene.io) API.
2//!
3//! Send transactional and bulk email, manage sending domains, subscriber
4//! lists, suppressions, templates, and webhooks. Built on `reqwest` + `serde`,
5//! with a single transport layer that owns bearer auth, JSON, retries on
6//! `429`/`5xx` (honouring `Retry-After`), and error mapping to [`AxeneError`].
7//!
8//! # Quickstart
9//!
10//! ```no_run
11//! use axene_mailer::{Axene, SendEmail};
12//!
13//! #[tokio::main]
14//! async fn main() -> Result<(), axene_mailer::AxeneError> {
15//! let client = Axene::new(std::env::var("AXENE_API_KEY").unwrap())?;
16//!
17//! let message = SendEmail::builder(
18//! ("hello@yourdomain.com", "Your Company"),
19//! "customer@example.com",
20//! "Your receipt",
21//! )
22//! .html("<p>Thanks for your order.</p>")
23//! .build();
24//!
25//! let res = client.emails().send(&message).await?;
26//! println!("queued message {}", res.id);
27//! Ok(())
28//! }
29//! ```
30//!
31//! Resources are reached through accessor methods: [`Axene::emails`],
32//! [`Axene::domains`], [`Axene::contacts`], [`Axene::suppressions`],
33//! [`Axene::templates`], and [`Axene::webhooks`].
34
35#![forbid(unsafe_code)]
36#![warn(missing_docs)]
37
38mod client;
39mod error;
40mod http;
41mod models;
42mod resources;
43
44pub use client::{Axene, AxeneBuilder};
45pub use error::{AxeneError, Result};
46pub use models::*;
47pub use resources::{Contacts, Domains, Emails, Suppressions, Templates, Webhooks};