如何在电子邮件模板中解析自定义占位符

时间:2014-08-30 07:04:26

标签: c#

我必须在应用程序中执行某些操作时发送邮件。 发送邮件时,我必须提取电子邮件模板,电子邮件模板包含{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;
    }
}

1 个答案:

答案 0 :(得分:1)

为了解析您的电子邮件模板(或任何模板),我建议您使用以下方法:

  • 1&#39; - 方法:使用String.Format静态方法并将占位符更改为:{0},{1}等。

  • 2&#39; - 方法:使用String.Replace将每个占位符替换为正确的值。

  • 3&#39; - 方法使用RazorEngine。它是可以从ASP中使用的Razor模板引擎。

对我来说,最好的方法是使用像RazorEngine或Mustache这样的现有模板引擎。

还有很多其他方法。希望这能帮助你,放纵我的英语。