Razor рассматривает как шаблоны электронной почты - PullRequest
53 голосов
/ 06 декабря 2010

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

Ответы [ 5 ]

63 голосов
/ 07 декабря 2010

Вы можете использовать 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/ для легкой интеграции в ваши проекты.

27 голосов
/ 09 марта 2011

Вы МОЖЕТЕ использовать файл шаблона, чтобы служить шаблоном для письма по электронной почте.Вы можете использовать любое расширение, которое выберете, потому что вы можете загрузить файл в виде текста в .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);

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

13 голосов
/ 13 мая 2011

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

(через Ганзельменский пакет NuGet недели 2 )

4 голосов
/ 18 февраля 2014

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

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

@inherits Essential.Templating.Razor.Email.EmailTemplate
@using System.Net;
@{
    From = new MailAddress("example@email.com");
    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

0 голосов
/ 20 декабря 2012

Mailzor

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

Итак, ознакомьтесь с проектом github 'mailzor'

Это также на Nuget.org / packages / mailzor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...