Email.Templating
1.0.1
dotnet add package Email.Templating --version 1.0.1
NuGet\Install-Package Email.Templating -Version 1.0.1
<PackageReference Include="Email.Templating" Version="1.0.1" />
<PackageVersion Include="Email.Templating" Version="1.0.1" />
<PackageReference Include="Email.Templating" />
paket add Email.Templating --version 1.0.1
#r "nuget: Email.Templating, 1.0.1"
#:package Email.Templating@1.0.1
#addin nuget:?package=Email.Templating&version=1.0.1
#tool nuget:?package=Email.Templating&version=1.0.1
Email.Templating
Brand-agnostic HTML email layout + i18n for .NET. One shell renderer (header +
body + footer + optional RFC 8058 unsubscribe line) and a pluggable localizer, so
every product stops hand-rolling its own email chrome. Consolidates the per-product
shells (Kefi EmailLayout, Marketing CampaignEmailRenderer).
The body HTML is inserted verbatim (trusted, authored by your templates); every other value — brand name, logo URL, unsubscribe URL, footer — is HTML-encoded so a tenant-controlled value can't break out of the markup.
Use it (DI)
services.AddEmailTemplating(); // IEmailLayoutRenderer + IEmailLocalizer (singletons)
// then inject IEmailLayoutRenderer:
var html = renderer.Render(new EmailLayoutModel
{
BodyHtml = "<p>Hello!</p>",
BrandName = "Acme",
LogoUrl = "https://cdn/acme.png", // optional; replaces the text heading
UnsubscribeUrl = "https://.../unsubscribe?token=…", // optional → adds footer line + label
FooterText = "Acme Ltd · 1 Example St", // optional; null → localized default
Culture = "el", // chrome localized (unsubscribe label, default footer)
});
Use it (static facade — for static template builders without DI)
var html = EmailLayouts.Render(new EmailLayoutModel { BodyHtml = body, BrandName = "Kefi", FooterText = "Made with Kefi" });
// EmailLayouts.Localizer.Get("digest_intro", "el") — resolve copy yourself
i18n
IEmailLocalizer.Get(key, culture) resolves from built-in per-culture string tables
(DefaultEmailLocalizer.Tables) with fallback culture → base language → English →
the key. ResolveCulture("el-GR") → "el"; unknown → "en". Shipped languages:
en, el. Adding a language is a data-only change (add a culture entry). The
layout localizes its own chrome (unsubscribe label, default footer); callers can
resolve their own keys (e.g. digest_intro) too.
MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.