2016-06-08 4 views
3

Я пытаюсь использовать шаблон .cshtml, чтобы отправить электронное письмо с помощью RazorEngine. В документации по their site показано, как использовать ее со строкой, содержащей синтаксис бритвы. Как я могу использовать его, загрузив файл .cshtml?Как отправить письмо с шаблона с помощью RazorEngine

Это то, что у меня есть

string templatePath = "~/Templates/InitialApplicationBody.cshtml"; 
    var result = Engine.Razor.RunCompile(templatePath, "templateKey", null, viewModel); 

ответ

2

От контроллера MVC, это легко генерировать HTML из представления Razor (файл CSHTML).

Я успешно использовал код из принятого ответа на Render a view as a string, поставив его в базовый контроллер.

// Renders a Razor view, returning the HTML as a string 
protected string RenderRazorViewToString<T>(string viewName, T model) where T : class 
{ 
    ViewData.Model = model; 

    using (var sw = new StringWriter()) 
    { 
     var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, 
                  viewName); 

     var viewContext = new ViewContext(ControllerContext, viewResult.View, 
             ViewData, TempData, sw); 

     viewResult.View.Render(viewContext, sw); 
     viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View); 

     return sw.GetStringBuilder().ToString(); 
    } 
} 
1

Mailzory Проект удобен для отправки сообщений электронной почты, которые имеют шаблоны Razor. Mailzory использует RazorEngine за сценой.

// 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() 

Этот проект размещен в Github. Также для Mailzory есть nuget package.

Смежные вопросы