templates - para - Vistas de afeitar como plantillas de correo electrónico
templates html for email (5)
Estoy creando un motor de correo electrónico en mvc3 y estoy tratando de usar vistas de afeitar como plantillas de correo electrónico. Escuché que esto es posible, pero aún no he encontrado ninguna información al respecto.
Mailzor
Relacionado con lo que mencionó @thiagoleite, tomé la idea de Kazi Manzur Rashid (con permiso) y me extendí para ser más amigable con respecto a cómo quería usarlo.
Así que echa un vistazo al proyecto github ''mailzor''
También está en Nuget.org/packages/mailzor
PUEDE usar un archivo de plantilla para servir como una plantilla de cuerpo de correo electrónico de afeitar. Puede usar la extensión que elija porque puede cargar un archivo como texto en .Net. Usemos el siguiente ejemplo para la plantilla:
Hello @Model.Name,
Welcome to @Model.SiteName!
Regards,
Site Admins
Guarde ese archivo como algo como "WelcomeMessage.cshtml", "WelcomeMessage.template", etc. Seleccione el archivo en el Explorador de soluciones y en la ventana Propiedades, seleccione "Copiar al directorio de salida" y elija "Copiar siempre". El único inconveniente es que esta plantilla debe acompañar a la aplicación y no compila como clase.
Ahora queremos analizarlo como una cadena para asignar a un cuerpo de mensaje de correo. Razor tomará la plantilla y una clase de modelo, los analizará y luego devolverá una cadena con los valores necesarios. En su aplicación, deberá agregar el paquete RazorEngine que se puede encontrar con NuGet. Aquí hay un ejemplo de código corto para ilustrar el uso:
using System.IO;
using RazorEngine;
// ...
MyModel model = new MyModel { Name = "User", SiteName = "Example.com" };
string template = File.OpenText("WelcomeMessage.template").ReadToEnd();
string message = Razor.Parse(template, model);
Es similar a las otras respuestas, pero muestra una forma rápida de cargar la plantilla desde un archivo de texto.
Puedes usar http://razorengine.codeplex.com/ para lograr esto. Le permite usar una afeitadora fuera de mvc.
string Email = "Hello @Model.Name! Welcome to Razor!";
string EmailBody = Razor.Parse(Email, new { Name = "World" });
Es simple de implementar y está disponible en http://nuget.codeplex.com/ para una fácil integración en sus proyectos.
Quizás deberías considerar MvcMailer . RazorEngine es (muy) bueno si aún no está utilizando MVC (lo he usado con éxito en un contexto de formularios web), pero si tiene MVC, puede aprovecharlo.
(a través del paquete NuGet de Hanselmen de la semana 2 )
También puede usar el paquete Essential Mail: Razor de NuGet. Es construir sobre RazorEngine y proporciona una interfaz simple para el procesamiento del correo electrónico.
Plantilla de mensaje de correo electrónico se ve algo así como
@inherits Essential.Templating.Razor.Email.EmailTemplate
@using System.Net;
@{
From = new MailAddress("[email protected]");
Subject = "Email Subject";
}
@section Html
{
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>HTML part of the email</h1>
</body>
</html>
}
@section Text
{
Text part of the email.
}
Lea más en GitHub: https://github.com/smolyakoff/essential-templating/wiki/Email-Template-with-Razor