Expand description
Provider-neutral transactional email client.
§Example
ⓘ
use mailbridge::{EmailMessage, HyvorRelayProvider, MailClient, MailbridgeConfig};
let config = MailbridgeConfig::from_env()?;
let provider = HyvorRelayProvider::from_config(&config)?;
let client = MailClient::try_from_config(provider, &config).await?;
let message = EmailMessage::builder()
.from("Hashcode", "no-reply@hashcode-fibration.com")?
.to("User", "user@example.com")?
.subject("Relay test")
.text("This is a test email.")
.build()?;
let receipt = client.send(message).await?;
println!("{}", receipt.message_id());§Queue Backends
queue-memory is intended for tests, local development, and workloads that can
tolerate losing queued mail on process restart. Use queue-sqlite for
single-node durable queueing and queue-postgres for multi-worker durable
queueing in applications that already operate PostgreSQL. Use
queue-scylla for high-throughput ScyllaDB deployments where bucket count,
lease timeout, replication, compaction, and dead-letter retention are tuned
by the owning application.
Future provider flags (sendgrid, sendpulse, and mailgun) expose types
that fail with a configuration error until full provider implementations are
added.
Live durable-backend tests are environment gated:
MAILBRIDGE_TEST_POSTGRES_URLforPostgreSQL.MAILBRIDGE_TEST_SCYLLA_URI,MAILBRIDGE_TEST_SCYLLA_KEYSPACE, andMAILBRIDGE_TEST_SCYLLA_TABLEforScyllaDB.
Structs§
- Attachment
- Email
Address - Email
Message - Email
Message Builder - Hyvor
Relay Provider - Mail
Client - Mail
Client Builder - Mail
Rate Limiter - Mailbridge
Config - Mailbridge
Config Builder - Mailgun
Provider - Message
Id - Postgres
Queue - Queue
Handle - QueueId
- Queue
Item - Queue
Worker - Queue
Worker Config - Queued
Email - Rate
Limit Config - Scylla
Queue - Send
Grid Provider - Send
Pulse Provider - Send
Receipt - Smtp
Client - Smtp
Config - Sqlite
Queue - Telemetry
Fields