#generator #generate-html #action #themes #transactional #responsive

mailgen

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

8 releases

new 0.2.6 Apr 18, 2024
0.2.5 Jan 29, 2024
0.2.4 Aug 15, 2023
0.2.3 Jun 1, 2023
0.1.0 Nov 12, 2022

#70 in Email

Download history 13/week @ 2023-12-28 73/week @ 2024-01-04 2/week @ 2024-01-11 1/week @ 2024-01-18 27/week @ 2024-01-25 28/week @ 2024-02-01 6/week @ 2024-02-08 3/week @ 2024-02-15 11/week @ 2024-02-22 36/week @ 2024-02-29 27/week @ 2024-03-07 18/week @ 2024-03-14 28/week @ 2024-03-21 34/week @ 2024-03-28 28/week @ 2024-04-04

119 downloads per month

MIT license

40KB
310 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 outr 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.4–9.5MB
~69K SLoC