Razor рассматривает как шаблоны электронной почты

Я создаю механизм электронной почты в mvc3, и я пытаюсь использовать виды бритвы в качестве шаблонов электронной почты. Я слышал, что это возможно, но я еще не нашел никакой информации об этом.

Ответ 1

Вы можете использовать http://razorengine.codeplex.com/ для достижения этого. Это позволяет использовать бритву вне mvc.

string Email = "Hello @Model.Name! Welcome to Razor!";
string EmailBody = Razor.Parse(Email, new { Name = "World" });

Он прост в реализации и доступен на http://nuget.codeplex.com/ для легкой интеграции в ваши проекты.

Ответ 2

Вы можете использовать файл шаблона в качестве шаблона тела электронной почты бритвы. Вы можете использовать любое расширение, которое вы выберете, потому что вы можете загрузить файл как текст в .Net. Для примера используйте шаблон:

Hello @Model.Name,

Welcome to @Model.SiteName!

Regards,
Site Admins

Сохраните этот файл как "WelcomeMessage.cshtml", "WelcomeMessage.template" и т.д. Выберите файл в обозревателе решений и в окне "Свойства", выберите "Копировать в каталог вывода" и выберите "Копировать всегда". Единственным недостатком является то, что этот шаблон должен сопровождать приложение и не компилируется как класс.

Теперь мы хотим проанализировать его как строку для назначения телу почты. Razor возьмет шаблон и класс модели, проанализирует их и вернет строку с необходимыми значениями. В вашем приложении вам нужно будет добавить пакет RazorEngine, который можно найти в NuGet. Вот пример короткого кода, иллюстрирующий использование:

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);

Он похож на другие ответы, но показывает быстрый способ загрузить шаблон из текстового файла.

Ответ 3

Возможно, вы должны рассмотреть MvcMailer. RazorEngine (очень) хорошо, если вы еще не используете MVC (я использовал его успешно в контексте webforms), но если у вас есть MVC, вы можете также воспользоваться им.

(через пакет Hanselmen NuGet недели 2)

Ответ 4

Вы также можете использовать пакет Essential Mail: Razor от NuGet. Он построен над RazorEngine и обеспечивает простой интерфейс для рендеринга электронной почты.

Шаблон сообщения электронной почты выглядит примерно так:

@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.
}

Подробнее о GitHub: https://github.com/smolyakoff/essential-templating/wiki/Email-Template-with-Razor

Ответ 5

Mailzor

Связанный с тем, о чем упоминал @thiagoleite, я принял идею Kazi Manzur Rashid (с разрешения) и расширил ее, чтобы быть более дружелюбным к тому, как я хотел ее использовать.

Итак, проверьте проект gizub "mailzor"

Он также находится на Nuget.org/packages/mailzor