快速业务通道

Discuz!NT邮件插件机制分析

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-11

 大约还是去年12月份,当时项目中遇到了一个很棘手的问题,就是管理员(或站长)在后台设置
了邮箱信息之后,使用注册邮件发送激活验证码时,总有用户反映不能收到激活信息的邮件。
        虽然不能收到邮件的情况有很多,甚至我已通过这个邮件发送程序测试过国内大多数知名网站的
邮箱(如126,sina ,sohu ,gmail等),但还是有站长或用户隔三差五反映这个问题。甚至到今天我
偶尔还会得到技术支持部门有关这方面问题的报怨。因此,今天这篇文章虽然说到了一个有关这个问
题的解决方案(但不完善),但还是希望园子里以前处理过这方面问题或有成功经验的朋友指点一二。

         好了,不费话了,开始今天的话题。

         相信下载到了我们发布的DLL并已Reflector相关程序结构的朋友,如果您留心看一下解决方案中的
Discuz.PlugIn项目并在VS下打开就会看到ISmtpMail.cs,SmtpEmailAttribute.cs,SmtpMail.cs,以
及SysMailMessage.cs这几个CS文件。现在简单说明一下:
 
         ISmtpMail.cs,定义了邮件收发类代码要实现的接口,主要的属性如下:

1public interface ISmtpMail
 2{
 3
 4        int MailDomainPort { set;}
 5
 6        string From { set;get;}
 7
 8        string FromName { set;get;}
 9
10        bool Html { set;get;}
11
12        string Subject { set;get;}
13
14        string Body { set;get;}
15
16        string MailDomain { set;}
17
18        bool Send();
19
20
21
 
     而SmtpMail,SysMailMessage这两个文件就是实现了这个接口的具体邮件发送类。
     因为今天只讲插件机制分析,所以就不在这里说这两个类中具体的实现方式了。下面将要说的是
这两个类中使用的"用户定制属性",这里以SysMailMessage类为例:

 

1     [SmtpEmail(".net邮件发送程序", Version = "1.0", Author = "Discuz!NT ",
2  DllFileName = "Discuz.PlugIn.dll")]
3     public class SysMailMessage : ISmtpMail
4     {
5         private string _subject;
6         private string _body;
7         private string _from;
    大家看到了在这个类上的SmtpEmail属性了吧,它就是下面要说明的"用户定制属性"的绑定应用。
而SmtpEmail请看如下代码(相关说明见注释):

如果您以前使用过采取属性绑定方式来标识和加载程序(或插件)的话,那么这时
您就会很清楚一会要使用的一些调用方法了。但我相信还会有一些朋友对这方面不是很熟
悉,所以我只能继续“贫”下去,希望您能耐着性子所我讲完:)

         有了这几个文件之后,如何调用和设置要使用的是SysMailMessage还是SmtpMail中的
邮件发送功能呢,其实这个选择的问题我们留给了用户,因为插件是对那些使用它们的人
来说才是有意义的,而使用什么插件以及使用的方式都是用户喜好。因此我们在后台提供
了如下的界面来让用户进行相关的设置(图如下):

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号