#generator #intro #name #value #mailgen #default-theme

mailgen

Mailgen generates clean, responsive HTML and Text e-mails for sending transactional mail

10 releases

new 0.4.0 May 1, 2025
0.3.0 May 9, 2024
0.2.6 Apr 18, 2024
0.2.5 Jan 29, 2024
0.1.0 Nov 12, 2022

#92 in Email

Download history 54/week @ 2025-01-11 11/week @ 2025-01-18 12/week @ 2025-01-25 16/week @ 2025-02-01 3/week @ 2025-02-08 7/week @ 2025-02-22 85/week @ 2025-03-01 27/week @ 2025-03-08 59/week @ 2025-03-15 20/week @ 2025-03-22 9/week @ 2025-03-29 111/week @ 2025-04-26

111 downloads per month

MIT license

50KB
536 lines

mailgen

Crates.io Documentation License

This crate allows you to generate pretty emails without all the hassle.

Inspired by the node.js package mailgen.

Examples

use mailgen::themes::DefaultTheme;
use mailgen::{Action, Branding, EmailBuilder, Greeting, Mailgen};

let theme = DefaultTheme::new();
let branding = Branding::new("test product", "https://testproduct.com");
let mailgen = Mailgen::new(&theme, branding);

let email = EmailBuilder::new()
    .greeting(Greeting::Name("person name"))
    .intro("test intro")
    .intro("another intro")
    .dictionary("test key", "test value")
    .dictionary("test key 2", "test value 2")
    .action(Action {
            text: "Test Action",
        link: "https://test.com/action",
        color: Some(("black", "white")),
        ..Default::default()
    })
    .action(Action {
            text: "Test Action 2",
        link: "https://test.com/action2",
        instructions: Some("test instruction"),
        ..Default::default()
    })
    .outro("test outro 1")
    .outro("test outro 2")
    .signature("test signature...")
    .build();

let rendered = mailgen.render_text(&email)?;
std::fs::write("./email.txt", &rendered)?;

let rendered = mailgen.render_html(&email)?;
std::fs::write("./email.html", &rendered)?;

default theme

Dependencies

~0.3–7MB
~45K SLoC