Razor Ver página como modelo de E-mail
Desenhei um modelo de E-mail a partir da sintaxe Razor. Quando eu envio este modelo como e-mail usando C# code e protocolo SMTP, eu recebo marcas navalha e HTML como Corpo de E-mail. Estou errado nesta abordagem? As Páginas Razor são permitidas como modelo de E-mail?
Aqui está a minha página.
@inherits ViewPage
@{
Layout = "_Layout";
ViewBag.Title = "";
}
<div class="container w-420 p-15 bg-white mt-40">
<div style="border-top:3px solid #22BCE5"> </div>
<span style="font-family:Arial;font-size:10pt">
Hello <b>{UserName}</b>,<br /><br />
Thanks for Registering to XYZ Portal<br /><br />
<a style="color:#22BCE5" href="{Url}">Click to Confirm Email</a><br />
<br /><br />
Thanks<br />
Admin (XYZ)
</span>
actualização..
using (StreamReader reader = new StreamReader(HttpContext.Current.Server.MapPath("~/ContentPages/EmailConfTemplate.cshtml")))
{
body = reader.ReadToEnd();
//Replace UserName and Other variables available in body Stream
body = body.Replace("{UserName}", FirstName);
}
Mais tarde, vou substituir o código SMTP as ..
MailMessage message = new MailMessage(
ApplicationWideData.fromEmailId, // From field
ToEmailId, // Recipient field
"Click On HyperLink To Verify Email Id", // Subject of the email message
body
);
8
4 answers
As mensagens de E-Mail só compreendem dois formatos: texto simples e HTML. Uma vez que Razor não é nenhum dos dois, ele vai precisar ser processado por algum motor, de modo que ele lhe dá de volta o HTML gerado.
É exactamente o que acontece quando se usa o Razor. ASP.NET acidente de viação, nos bastidores. O arquivo Razor é compilado em uma classe C# interna, que é executada, e o resultado da execução é o conteúdo de cadeia de caracteres do HTML, que é enviado para o cliente. O teu problema é que queres e precisa desse processamento para correr, apenas para obter o HTML de volta como uma string, em vez de ser enviado para o navegador. Depois disso você pode fazer o que quiser com a string HTML, incluindo enviá-la como um e-mail. Há vários pacotes que incluem este poder, e eu usei o Westwind.RazorHosting com sucesso, mas também pode usar Razorengina {[10] } com resultados semelhantes. Eu preferiria RazorHosting para aplicações independentes Não-web, e RazorEngine para web aplicações Aqui está uma versão (desinfectada) de algum do meu código - estou a usar o Westwind.RazorHosting para enviar e-mails formatados a partir de um serviço windows, usando uma vista fortemente digitada.RazorFolderHostContainer host = = new RazorFolderHostContainer();
host.ReferencedAssemblies.Add("NotificationsManagement.dll");
host.TemplatePath = templatePath;
host.Start();
string output = host.RenderTemplate(template.Filename, model);
MailMessage mm = new MailMessage { Subject = subject, IsBodyHtml = true };
mm.Body = output;
mm.To.Add(email);
var smtpClient = new SmtpClient();
await smtpClient.SendMailAsync(mm);
13
Author: SWeko, 2015-10-14 12:03:38
Já deste uma vista de olhos?
É um pacote gratuito disponível do GitHub ( https://github.com/smsohan/MvcMailer)
Também há um guia passo a passo para ele https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide
Também está no Nuget. https://www.nuget.org/packages/MvcMailer Basicamente, vai processar a tua visão em html. 3
Author: Darren, 2015-10-14 12:24:27
Vê um processador de lâminas como o RazorEngine ( https://razorengine.codeplex.com/ que está disponível em NuGet. Ele processa razor para criar uma saída, que é o que você então usaria como o corpo de seu e-mail.
1
Author: Chris Disley, 2015-10-14 11:57:52
O projecto Mailzory é uma escolha valiosa e conveniente para enviar e-mails que têm modelos de navalha.
// template path
var viewPath = Path.Combine("Views/Emails", "hello.cshtml");
// read the content of template and pass it to the Email constructor
var template = File.ReadAllText(viewPath);
var email = new Email(template);
// set ViewBag properties
email.ViewBag.Name = "Johnny";
email.ViewBag.Content = "Mailzory Is Funny";
// send email
var task = email.SendAsync("[email protected]", "subject");
task.Wait()
Este projecto está hospedado no Github. Também existe um pacote nuget disponível para Mailzory.
0
Author: Ehsan Mirsaeedi, 2017-09-15 03:41:43