Discuz!NT邮件插件机制分析
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-04-11
; } 25 } 26 } 27 } 28 } 29 30 31 实现的代码比较简单,这面就不多说什么了。 上面只是解决了显示插件列表的问题,而如果将用户选取的插件信息进行保存以备使用的 的代码请看CS文件中的这部分代码: 1private void SaveEmailInfo_Click(object sender, EventArgs e) 2{ 3 4 try 5 { 6 __emailinfo.PluginNameSpace = smtpemail.SelectedValue.Split('','')[0]; 7 __emailinfo.DllFileName = smtpemail.SelectedValue.Split('','')[1]; 8 } 9 catch 10 { 11 ; 12 } 13 14 EmailConfigs.SaveConfig(__emailinfo); //序列化保存相关信息 15 Emails.ReSetISmtpMail(); 16} 17 18 这样就通过了“序列化”的方式保存了用户定制的信息,这个信息有邮件程序的名空间 和所在的DLL信息。这些信息最后都放在了config/email.config中。 目前设置方面已经万事俱备,就看前台如果调用了。为了方便起见,我们定制了一个类 用于发送不同邮件内容信息,它位于(Discuz.Forum项目下的Emails.cs文件),其中的静态 构造函数声明如下: 1static Emails() 2{ 3 4 try 5 { 6 //读取相应的DLL信息 7 Assembly asm = Assembly.LoadFrom(HttpRuntime.BinDirectory+emailinfo.DllFileName+".dll"); 8 ESM = (ISmtpMail) Activator.CreateInstance(asm.GetType(emailinfo.PluginNameSpace)); 9 } 10 catch 11 { 12 13 catch 14 { 15 if(emailinfo!=null) 16 { 17 //如果没有有效的设置则使用系统指定的邮件发送类代码 18 if(emailinfo.PluginNameSpace!=null && emailinfo.PluginNameSpace.IndexOf("SmtpMail")>0) 19 { 20 ESM = new SmtpMail(); 21 } 22 else 23 { 24 ESM = new SysMailMessage(); 25 } 26 27 } 28 29 30 其中了ESM就是接口实例protected static ISmtpMail ESM; 这样就通过加载指定的DLL得到了要使用的类实例,而如下使用它大家只要看一上这个CS文件 的其余代码就会一清二楚了:) 可能有些朋友会问这样一个问题, 为什么要用DLL而不是直接用下 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Discuz!NT邮件插件机制分析的所有评论