HtmlMail.TemplateEngine
1.0.3
dotnet add package HtmlMail.TemplateEngine --version 1.0.3
NuGet\Install-Package HtmlMail.TemplateEngine -Version 1.0.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="HtmlMail.TemplateEngine" Version="1.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="HtmlMail.TemplateEngine" Version="1.0.3" />
<PackageReference Include="HtmlMail.TemplateEngine" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add HtmlMail.TemplateEngine --version 1.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: HtmlMail.TemplateEngine, 1.0.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package HtmlMail.TemplateEngine@1.0.3
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=HtmlMail.TemplateEngine&version=1.0.3
#tool nuget:?package=HtmlMail.TemplateEngine&version=1.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
📄 HtmlMail Template Engine (.NET)
Uma pequena biblioteca para gerar templates HTML com interpolação de C# diretamente no HTML, sem depender de Razor ou bibliotecas externas.
✅ Funcionalidades
- Template HTML com expressões C# inline:
@{Model.Property}ou@{ código C# } - Blocos de código C# dentro do HTML
- Suporte a Model fortemente tipado
- Inclusão de CSS externo no template
- Compilação dinâmica com Roslyn (
Microsoft.CodeAnalysis.CSharp.Scripting)
🚀 Como usar
1. Instale o pacote NuGet necessário
A biblioteca depende de:
Microsoft.CodeAnalysis.CSharp.Scripting
No seu projeto:
dotnet add package Microsoft.CodeAnalysis.CSharp.Scripting
2. Estrutura esperada
Você precisa ter:
- Um arquivo
.htmlcomo template - Um arquivo
.csspara estilos - Um objeto Model (classe C#) com os dados
Exemplo de HTML Template:
caminho: template.html
<html>
<head>
<style></style>
</head>
<body>
<h1>Olá @Model.Nome!</h1>
<p>Sua idade: @{ Model.Idade + 1 }</p>
@{
if (Model.Idade >= 18)
{
sb.Append("<p>É Maior de idade </p>");
} else
{
sb.Append("<p>Não é Maior de idade</p>");
}
}
<p>Status: @Model.Status</p>
</body>
</html>
Exemplo de CSS:
caminho: style.css
body {
font-family: Arial, sans-serif;
color: #333;
}
Exemplo de Model:
public class Usuario
{
public string Nome { get; set; } = "";
public int Idade { get; set; }
public string Status { get; set; } = "";
}
Exemplo de uso no C#:
using HtmlMail;
var usuario = new Usuario
{
Nome = "João",
Idade = 20,
Status = "Ativo"
};
string caminhoHtml = "template.html";
string caminhoCss = "style.css";
string htmlGerado = await Template.GenerateHtml(caminhoHtml, caminhoCss, usuario);
Console.WriteLine(htmlGerado);
✅ Resultado esperado:
<html>
<head>
<style>
body {
font-family: Arial, sans-serif;
color: #333;
}
</style>
</head>
<body>
<h1>Olá João!</h1>
<p>Sua idade: 21</p>
<p>É Maior de idade</p>
<p>Status: Ativo</p>
</body>
</html>
✅ Sintaxe suportada no HTML:
| Tipo | Exemplo | Resultado |
|---|---|---|
| Expressão simples | @Model.Nome |
Substitui pelo valor da propriedade |
| Expressão C# inline | @{ Model.Idade + 1 } |
Avalia a expressão e insere o resultado |
| Bloco de código | @{ if (...) { sb.Append(...); } } |
Executa um bloco de código C# durante a renderização |
💡 Importante: Dentro de blocos de código, use
sb.Append()para adicionar HTML.
⚠️ Cuidados
- O template é compilado e executado como código C#. Cuidado com código malicioso se o template for fornecido por usuários externos.
- Exceções de compilação são retornadas com a mensagem e o script gerado para facilitar o debug.
📌 Requisitos:
- .NET 6 ou superior
- Pacote NuGet:
Microsoft.CodeAnalysis.CSharp.Scripting
✅ Possíveis melhorias futuras:
- Suporte a Partial Views
- Cache de scripts compilados
📃 Licença
Fique a vontade!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- Microsoft.CodeAnalysis.CSharp.Scripting (>= 4.14.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.