Я создаю механизм электронной почты в mvc3, и я пытаюсь использовать виды бритвы в качестве шаблонов электронной почты. Я слышал, что это возможно, но я еще не нашел никакой информации об этом.
Razor рассматривает как шаблоны электронной почты
Ответ 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