1,在AD管理器,每个用户的属性中可以设置.
2,在exchange系统管理器,存储组属性上可以对存储组中的所有用户邮箱进行限制.
这两种方式对用户的设置自然是方便了,但对我们编程获取邮箱限量却造成了很多麻烦.
注: 公司的产品遇到了这个问题,绵延2年没解决,其间数次造访ms的技术支持,无果.汗~~~
幸好,06年代码终于出来了.
实现思路: 首先访问AD,看AD中有无设置,若无,则从AD中取出用户所在的exchange存储组路径,然后调用exchange系统管理的组件(必须在代码运行的机器上安装exchange系统管理),获取某个存储的邮箱容量限制。
以下是代码片段: using System; using System.Collections ; using System.DirectoryServices; //用户缓存 private static Hashtable _UserQuotaList = new Hashtable() ; /// <summary> /// 获取用户邮箱限量,缓存处理 /// @author:jianyi0115@163.com /// </summary> /// <param name="userAccount"></param> /// <returns></returns> public static int GetMailboxQuota( string userAccount ) { if( _UserQuotaList.ContainsKey(userAccount) ) return Convert.ToInt32( _UserQuotaList[userAccount] ) ; int limit = GetMailboxQuotaFromServer( userAccount ); _UserQuotaList.Add( userAccount , limit ) ; return limit ; } /// <summary> /// 从服务器获取用户邮箱限量 /// </summary> /// <param name="userAccount"></param> /// <returns></returns> public static int GetMailboxQuotaFromServe( string userAccount ) { string sEmailAddress = userAccount + "@" + Config.MailDomain ; //用户的邮件 // System.DirectoryServices.DirectoryEntry adsiTop = // new System.DirectoryServices.DirectoryEntry ( "LDAP://xhdcpdom0001" ,"Centralism", "App1234"); System.DirectoryServices.DirectoryEntry adsiTop = new System.DirectoryServices.DirectoryEntry ( Config.ADServerPath ,Config.ADAdministrator, Config.ADAdministratorPassword ); System.DirectoryServices.DirectorySearcher adsiSearcher = new DirectorySearcher(adsiTop); adsiSearcher.Filter = "(mail="+sEmailAddress+")" ; adsiSearcher.PropertiesToLoad.Add("mdboverhardquotalimit") ; adsiSearcher.PropertiesToLoad.Add("homemdb") ; adsiSearcher.PropertiesToLoad.Add("mdbusedefaults") ; adsiSearcher.PropertiesToLoad.Add("msExchHomeServerName") ; System.DirectoryServices.SearchResult adsiResult = adsiSearcher.FindOne() ; if( adsiResult == null ) { adsiSearcher.Filter = "(anr=SMTP:" + sEmailAddress + ")" ; adsiSearcher.PropertiesToLoad.Add("mdboverhardquotalimit") ; adsiSearcher.PropertiesToLoad.Add("homemdb") ; adsiSearcher.PropertiesToLoad.Add("mdbusedefaults") ; adsiResult = adsiSearcher.FindOne(); } if( adsiResult == null ) { adsiSearcher.Dispose(); adsiTop.Dispose() ; return 0 ; } //使用默认设置 if( adsiResult.Properties["mdbusedefaults"] ! = null && adsiResult.Properties["mdbusedefaults"][0]. ToString().ToLower() == "true" ) { string homeDb = adsiResult.Properties["homemdb"][0].ToString(); adsiSearcher.Dispose(); adsiTop.Dispose() ; return GetHomeDbMailboxQuota( homeDb ) ; } //非默认设置 且AD设置为空 if( adsiResult.Properties["mdboverhardquotalimit"] == null ) { string homeDb = adsiResult.Properties["homemdb"][0].ToString(); adsiSearcher.Dispose(); adsiTop.Dispose() ; return GetHomeDbMailboxQuota( homeDb ) ; } else { string limit = adsiResult.Properties["mdboverhardquotalimit"][0].ToString(); adsiSearcher.Dispose(); adsiTop.Dispose() ; return Convert.ToInt32( limit ); } } private static Hashtable _HomeDbQuotaList = new Hashtable() ; /// <summary> /// 从获取exchange服务器存储组邮箱限量,缓存处理 /// </summary> /// <param name="dn"></param> /// <returns></returns> static private int GetHomeDbMailboxQuota( string dn ) { if( _HomeDbQuotaList.ContainsKey( dn ) ) return Convert.ToInt32( _HomeDbQuotaList[dn] ) ; string path = Config.ADServerPath ; if( !path.EndsWith( "/" ) ) path += "/"; path += dn ; CDOEXM.MailboxStoreDB mdb = new CDOEXM.MailboxStoreDBClass(); mdb.DataSource.Open( path , null, ADODB.ConnectModeEnum.adModeRead, ADODB.RecordCreateOptionsEnum.adFailIfNotExists , ADODB.RecordOpenOptionsEnum.adOpenSource, Config.ADAdministrator, Config.ADAdministratorPassword ); int limit = mdb.HardLimit ; mdb = null ; try { _HomeDbQuotaList.Add( dn , limit ) ; } catch{} return limit; } |
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |