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

本文关键字:自定义 占位符 电子邮件 何解决 解决 | 更新日期: 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。

还有很多其他方式。希望这对你有所帮助,并且宽容我的英语。