私はmvc3で電子メールエンジンを作成していますが、電子メールテンプレートとしてカミソリビューを使用しようとしています。これは可能だと聞きましたが、まだ情報が見つかりません。
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/ で利用できます。
テンプレートファイルを使用して、カミソリの電子メール本文テンプレートとして使用できます。ファイルを.Netでテキストとしてロードできるため、選択した拡張子を使用できます。テンプレートに次の例を使用してみましょう。
Hello @Model.Name,
Welcome to @Model.SiteName!
Regards,
Site Admins
そのファイルを「WelcomeMessage.cshtml」、「WelcomeMessage.template」などの名前で保存します。ソリューションエクスプローラーでファイルを選択し、[プロパティ]ウィンドウで[出力ディレクトリにコピー]を選択し、[常にコピー]を選択します。唯一の欠点は、このテンプレートがアプリケーションに付属する必要があり、クラスとしてコンパイルされないことです。
次に、メールメッセージ本文に割り当てる文字列として解析したいと思います。 Razorはテンプレートとモデルクラスを取得して解析し、必要な値を含む文字列を返します。アプリケーションに、NuGetで見つかるRazorEngineパッケージを追加する必要があります。使用法を説明する短いコード例を次に示します。
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);
他の回答と似ていますが、テキストファイルからテンプレートをすばやく読み込む方法を示しています。
おそらく MvcMailer を考慮する必要があります。 RazorEngineは、MVCをまだ使用していない場合(Webフォームコンテキストで正常に使用している場合)(非常に)優れていますが、MVCを使用している場合は同様に利用できます。
NuGetの Essential Mail:Razor パッケージを使用することもできます。 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
@thiagoleiteの言及にリンクして、私はKazi Manzur Rashidのアイデアを(許可を得て)使用し、それをより使いやすくするために拡張しました。
githubプロジェクト 'mailzor' を確認してください
Nuget.org/packages/mailzor にもあります