如何解决电子邮件模板中的自定义占位符
本文关键字:自定义 占位符 电子邮件 何解决 解决 | 更新日期: 2023-09-27 18:20:12
在应用程序中执行某些操作时,我必须发送邮件。在发送邮件时,我必须获取电子邮件模板,电子邮件模板包含占位符,如{CustomerName}{CustomerAddress}。我无法确定解决占位符的最佳实践是什么,我在谷歌上搜索了一下,但没有有用的结果。以下是我得出的解决方案,如果有其他可用的最佳实践建议的话。
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;
}
}
为了解决您的电子邮件模板(或任何模板),我建议您使用以下方法:
-
1'-方法:使用字符串。格式化静态方法并将占位符更改为:{0}、{1}等。
-
2'-方法:使用String.Replace将每个占位符替换为正确的值。
-
3'-方法使用RazorEngine。这是可从ASP中使用的Razor模板引擎。
对我来说,最好的方法是使用一个坚实的现有模板引擎,比如RazorEngine或Mustache。
还有很多其他方式。希望这对你有所帮助,并且宽容我的英语。