ferrum-email 0.1.2

Component-based email framework for Rust — type-safe templates, cross-client rendering, unified sending API. The complete SDK.
Documentation

ferrum-email

The complete email framework for Rust. One crate, everything included.

Type-safe templates, cross-client rendering, native SMTP sending, NexusShield security.

Install

[dependencies]
ferrum-email = "0.1"
tokio = { version = "1", features = ["full"] }

Send Your First Email

use ferrum_email::prelude::*;

struct WelcomeEmail { name: String }

impl Component for WelcomeEmail {
    fn subject(&self) -> Option<&str> { Some("Welcome!") }

    fn render(&self) -> Node {
        Html::new()
            .child(Body::new().child(
                Container::new().child(
                    Section::new().padding(Spacing::all(Px(32)))
                        .child_node(
                            Heading::h1(&format!("Hello, {}!", self.name))
                                .color(Color::hex("2D2A26")).into_node())
                        .child_node(
                            Button::new("https://example.com", "Get Started")
                                .background(Color::hex("C0582B"))
                                .text_color(Color::white()).into_node())
                )))
            .into_node()
    }
}

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Send via Ferrum Mail platform (https://ferrum-mail.com)
    let provider = SmtpProvider::builder()
        .host("ferrum-mail.com")
        .port(587)
        .credentials("fm_your_api_key", "")
        .build()?;

    let sender = Sender::new(provider, "you@yourapp.com");
    sender.send(&WelcomeEmail { name: "World".into() }, "user@example.com").await?;
    Ok(())
}

What's Included

Module Description
ferrum_email::core Component trait, Node tree, Style system, types
ferrum_email::components Html, Body, Button, Text, Heading, Image, etc.
ferrum_email::render HTML renderer, CSS inliner, plain text extractor
ferrum_email::send Sender, SMTP provider, ConsoleProvider
ferrum_email::prelude Everything in one use statement

Feature Flags

Feature Default Description
smtp Yes Native SMTP with STARTTLS
shield Yes NexusShield security validation
vault No NexusVault encrypted credentials

Links

License

MIT OR Apache-2.0