私はこのようなかみそりエンジンを使用します:
public class EmailService : IService
{
private readonly ITemplateService templateService;
public EmailService(ITemplateService templateService)
{
if (templateService == null)
{
throw new ArgumentNullException("templateService");
}
this.templateService = templateService;
}
public string GetEmailTemplate(string templateName)
{
if (templateName == null)
{
throw new ArgumentNullException("templateName");
}
Assembly assembly = Assembly.GetAssembly(typeof(EmailTemplate));
Stream stream = assembly.GetManifestResourceStream(typeof(EmailTemplate), "{0}.cshtml".FormatWith(templateName));
string template = stream.ReadFully();
return template;
}
public string GetEmailBody(string templateName, object model = null)
{
if (templateName == null)
{
throw new ArgumentNullException("templateName");
}
string template = GetEmailTemplate(templateName);
string emailBody = templateService.Parse(template, model, null, null);
return emailBody;
}
}
私が使用しているテンプレート サービスはインジェクトされていますが、これは単なるデフォルトの実装です。
internal ITemplateService InstanceDefaultTemplateService()
{
ITemplateServiceConfiguration configuration = new TemplateServiceConfiguration();
ITemplateService service = new TemplateService(configuration);
return service;
}
この場合は特に、これらのテンプレートからメールを作成します。@section
メールの件名とメール本文のさまざまなセクションに sを使用できるようにしたいのですが、メール構造全体に共通のスタイルを指定するレイアウトを使用します (これはMailChimpのいずれかのようになります)。おそらく)。
質問は 2 つあります。
- でレイアウトを指定するにはどうすればよい
RazorEngine
ですか? - これらのレイアウトを文字列 (またはストリーム) から指定するにはどうすればよいですか? ご覧のとおり、埋め込みリソースを使用して剃刀メール テンプレートを保存しています。
アップデート
明確ではなかったかもしれませんが、RazorEngineライブラリについて言及しています。