我必须在应用程序中执行某些操作时发送邮件。 发送邮件时,我必须提取电子邮件模板,电子邮件模板包含{CustomerName} {CustomerAddress}等占位符。 我无法确定解决占位符的最佳做法是什么,我用Google搜索但没有有用的结果。 以下是我已经达成的解决方案,如果有任何其他可用的最佳实践建议。
public class EmailTemplateResolver<T> where T : class
{
public string resolveTemplate(T dataContainer, string Template)
{
string pattern = @"pattern";
MatchCollection placeHolders = Regex.Matches(Template, pattern);
foreach (var item in placeHolders)
{
//Find data will provide original data from dataContainer and place holder text will be removed from template
Template = Template.Replace(item.ToString(), FindData(dataContainer, item.ToString()));
}
return Template;
}
//every values in placeholder will be property of dataContainer object
public string FindData(T dataContainer, string Property)
{
string data=string.Empty;
//use reflection to find the property value, use recursion to find the original value in nested object
return data;
}
}
答案 0 :(得分:1)
为了解析您的电子邮件模板(或任何模板),我建议您使用以下方法:
1&#39; - 方法:使用String.Format静态方法并将占位符更改为:{0},{1}等。
2&#39; - 方法:使用String.Replace将每个占位符替换为正确的值。
3&#39; - 方法使用RazorEngine。它是可以从ASP中使用的Razor模板引擎。
对我来说,最好的方法是使用像RazorEngine或Mustache这样的现有模板引擎。
还有很多其他方法。希望这能帮助你,放纵我的英语。