一直以来,mail模板的维护都没有一个定式,不是存放于数据库,就是直接读Html文件,要么更变态直接在Source中拼接Html代码,这些都有一定的弊端。
存放于数据库中:
一是徒增操作的烦琐性,二是若要修改Mail模板,每次都得从数据库中捞出来编辑再存入数据库中,才能看到编辑后的效果,不方便。
读文件的方式:
这种方式配置起来不是很方便,项目灵活性不怎么好,要限定文件的路径等问题,尤其是Web项目。
拼在Source中:
这种方式就更加郁闷了,需要修改模板时,得先运行程式将该Html获得,再做编辑,然后再拼在Source中,会让程序员有砍人的冲动!
这次在做项目的过程中,需要维护Mail模板,开始的时候直接读文件的方式,因为PM没有提供数据库,也不想增加维护的苦难度。后来思考来思考去,觉得不怎么妥当,决定尝试一下资源文件的做法(还好的.NET项目
)1、首先创建一个MailTemplate.resx文件到项目中,并设定编译选项为“嵌入的资源”。
2、在MailTemplate.resx文件中维护Html字符串(以键值对的形式)
3、在程序中就可以通过ResourceManager读取该resx中的资源。
public static string GetResourceByKey(string resourceName,string key)
{
// Create a resource manager to retrieve resources.
ResourceManager rm = new ResourceManager(resourceName, Assembly.GetExecutingAssembly());
rm.IgnoreCase = true;
// Retrieve the value of the string resource named
string strValue = rm.GetString(key);
rm = null;
return strValue;
}
4、这里原理是将Mail Template作为内嵌的资源编译到项目中,那么该资源即存在于该装配件中,在程序运行时,可以利用反射技术通过当前Assembly的信息获取其中的资源。
需要注意的是:ResourceManager构造函数中resourceName为资源文件的namespace,如MailTemplate.resx的namespace为TestProject.MailTemplate,则resourceName应该为TestProject.MailTemplate。