[package]
name = "mailbridge"
version = "0.1.2"
edition = "2024"
rust-version = "1.94"
license = "MIT"
repository = "https://github.com/boniface/mailbridge"
homepage = "https://github.com/boniface/mailbridge"
documentation = "https://docs.rs/mailbridge"
description = "Provider-neutral transactional email library for Rust services"
readme = "README.md"
keywords = ["email", "smtp", "transactional", "queue", "mail"]
categories = ["api-bindings", "email", "web-programming"]
include = [
"Cargo.lock",
"Cargo.toml",
"LICENSE",
"README.md",
"docs/**",
"examples/**",
"src/**",
]
[package.metadata.docs.rs]
no-default-features = true
features = [
"hyvor-relay",
"api",
"rustls",
"queue-memory",
"rate-limit",
"smtp",
"telemetry",
"queue-sqlite",
"queue-postgres",
"queue-scylla",
"sendgrid",
"sendpulse",
"mailgun",
"dotenv",
]
[features]
default = ["hyvor-relay", "api", "rustls", "queue-memory", "rate-limit"]
api = ["dep:reqwest"]
smtp = ["dep:lettre"]
hyvor-relay = []
sendgrid = []
sendpulse = []
mailgun = []
rustls = ["reqwest/rustls"]
native-tls = ["reqwest/native-tls"]
queue-memory = []
queue-sqlite = ["dep:sqlx", "sqlx/sqlite", "sqlx/runtime-tokio", "sqlx/tls-rustls"]
queue-postgres = ["dep:sqlx", "sqlx/postgres", "sqlx/runtime-tokio", "sqlx/tls-rustls"]
queue-scylla = ["dep:scylla"]
rate-limit = ["dep:governor"]
dotenv = ["dep:dotenvy"]
telemetry = ["dep:tracing"]
test-utils = []
[dependencies]
anyhow = "1"
async-trait = "0.1"
base64 = "0.22"
dotenvy = { version = "0.15", optional = true }
governor = { version = "0.10", optional = true }
lettre = { version = "0.11", optional = true, default-features = false, features = ["tokio1-rustls-tls", "smtp-transport", "builder"] }
reqwest = { version = "0.13", optional = true, default-features = false, features = ["json"] }
scylla = { version = "1", optional = true }
secrecy = "0.10"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sqlx = { version = "0.9", optional = true, default-features = false }
thiserror = "2"
tokio = { version = "1", features = ["macros", "rt-multi-thread", "time", "sync"] }
tracing = { version = "0.1", optional = true }
url = "2"
uuid = { version = "1", features = ["v4", "serde"] }
[dev-dependencies]
tokio = { version = "1", features = ["macros", "rt-multi-thread", "time", "sync", "test-util"] }
[[example]]
name = "send_http"
required-features = ["hyvor-relay", "api"]
[[example]]
name = "queue_worker"
required-features = ["hyvor-relay", "api", "queue-memory"]