在我的上一片文章中,我贴出了与帐号相关的ADHelper类,以下贴出了与Exchange部分操作相关的ExchangeHelper类

Exchange开发(六) ExchangeHelper类using System;
Exchange开发(六) ExchangeHelper类
using System.ComponentModel.Design;
Exchange开发(六) ExchangeHelper类
using System.DirectoryServices;
Exchange开发(六) ExchangeHelper类
using System.Collections;
Exchange开发(六) ExchangeHelper类
using System.Text;
Exchange开发(六) ExchangeHelper类
using System.Diagnostics;
Exchange开发(六) ExchangeHelper类
using System.Net;
Exchange开发(六) ExchangeHelper类
using System.Runtime.InteropServices;
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类
using MSXML2;
Exchange开发(六) ExchangeHelper类
using CDOEXM;
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类 
namespace ColourLife.ExchangeMail
{
Exchange开发(六) ExchangeHelper类

Exchange开发(六) ExchangeHelper类    
/// ExchangeMail 的摘要说明。
Exchange开发(六) ExchangeHelper类    
/// </summary>
Exchange开发(六) ExchangeHelper类    public class ExchangeAccount
{
Exchange开发(六) ExchangeHelper类        
private const string EXCHANGE_NAME = "Exchange";
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类        
public static string GetLocalDNSName()
{
Exchange开发(六) ExchangeHelper类            
return Dns.GetHostByName(Environment.MachineName).HostName;
Exchange开发(六) ExchangeHelper类        }

Exchange开发(六) ExchangeHelper类 
Exchange开发(六) ExchangeHelper类

Exchange开发(六) ExchangeHelper类        
/// 校验指定的用户的Exchange账户及密码是否正确
Exchange开发(六) ExchangeHelper类        
/// </summary>
Exchange开发(六) ExchangeHelper类        
/// <param name="useSSL">指示是否使用SSL</param>
Exchange开发(六) ExchangeHelper类        
/// <param name="serverName">Exchange Server的计算机名称</param>
Exchange开发(六) ExchangeHelper类        
/// <param name="userName">用户名</param>
Exchange开发(六) ExchangeHelper类        
/// <param name="password">密码</param>
Exchange开发(六) ExchangeHelper类        
/// <returns></returns>
Exchange开发(六) ExchangeHelper类        public static HttpStatusCode AuthorizationAccount(bool useSSL,string serverName,string userName,string password)
{
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类            MSXML2.IXMLHTTPRequest xmlHttp 
= new MSXML2.XMLHTTPClass();
Exchange开发(六) ExchangeHelper类            xmlHttp.open(
"GET",GetUserExchangeURL(useSSL,serverName,userName),false,userName,password);
Exchange开发(六) ExchangeHelper类            xmlHttp.send(
null);
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类            
return (HttpStatusCode)Enum.Parse(typeof(HttpStatusCode),xmlHttp.status.ToString());
Exchange开发(六) ExchangeHelper类        }

Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类        
public static string GetUserExchangeURL(bool isUsingSSL,string serverName,string userName)
{
Exchange开发(六) ExchangeHelper类            StringBuilder urlBuilder 
= new StringBuilder();
Exchange开发(六) ExchangeHelper类            
string protocol = isUsingSSL ? "https://" :"http://"
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类            urlBuilder.Append(protocol).Append(serverName).Append(
"/").Append(EXCHANGE_NAME);
Exchange开发(六) ExchangeHelper类            urlBuilder.Append(
"/").Append(userName);
Exchange开发(六) ExchangeHelper类            
return urlBuilder.ToString();
Exchange开发(六) ExchangeHelper类        }

Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类 

Exchange开发(六) ExchangeHelper类        
/// 创建Exchange账户到指定的用户组中,同时也创建了AD账户
Exchange开发(六) ExchangeHelper类        
/// </summary>
Exchange开发(六) ExchangeHelper类        
/// <param name="userName"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="password"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="organizeName"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="adGroup"></param>
Exchange开发(六) ExchangeHelper类        public static DirectoryEntry CreateNewExchangeAccount(string userName,string password,
Exchange开发(六) ExchangeHelper类            
string organizeName,string adGroup)
{
Exchange开发(六) ExchangeHelper类            
return CreateNewExchangeAccount(null,null,userName,password,organizeName,adGroup);
Exchange开发(六) ExchangeHelper类        }

Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类

Exchange开发(六) ExchangeHelper类        
/// 使用指定的安全信息来创建Exchange账户到指定的用户组中,同时也创建了AD账户
Exchange开发(六) ExchangeHelper类        
/// </summary>
Exchange开发(六) ExchangeHelper类        
/// <param name="adminName"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="adminPassword"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="userName"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="password"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="organizeName"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="adGroup"></param>
Exchange开发(六) ExchangeHelper类        public static DirectoryEntry CreateNewExchangeAccount(string adminName,string adminPassword,string userName,
Exchange开发(六) ExchangeHelper类            
string password,string organizeName,string adGroup)
{
Exchange开发(六) ExchangeHelper类            
//创建AD帐户
Exchange开发(六) ExchangeHelper类
            DirectoryEntry userEntry = ADHelper.CreateADAccount(adminName,adminPassword,userName,password,organizeName,adGroup);
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类            
//创建Exchange邮箱
Exchange开发(六) ExchangeHelper类
            CDOEXM.IMailboxStore mailbox = (CDOEXM.IMailboxStore)userEntry.NativeObject;
Exchange开发(六) ExchangeHelper类            
string machineName = Environment.MachineName;
Exchange开发(六) ExchangeHelper类            mailbox.CreateMailbox(GetFirstStoreMDB(machineName,adminName,adminPassword));
Exchange开发(六) ExchangeHelper类            userEntry.CommitChanges();
Exchange开发(六) ExchangeHelper类            
if (adGroup != null && adGroup.Length > 0)
{
Exchange开发(六) ExchangeHelper类                ADHelper.AddUserToGroup(adminName,adminPassword,userName,adGroup);
Exchange开发(六) ExchangeHelper类            }

Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类            
return userEntry;
Exchange开发(六) ExchangeHelper类        }

Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类 
Exchange开发(六) ExchangeHelper类

Exchange开发(六) ExchangeHelper类        
/// 获取Exchange的第一个邮箱存储的LDAP路径
Exchange开发(六) ExchangeHelper类        
/// </summary>
Exchange开发(六) ExchangeHelper类        
/// <returns></returns>
Exchange开发(六) ExchangeHelper类        private static string GetFirstStoreMDB(string serverName,string userName,string password)
{
Exchange开发(六) ExchangeHelper类            CDOEXM.IExchangeServer exchangeServer 
= new CDOEXM.ExchangeServerClass();
Exchange开发(六) ExchangeHelper类            CDOEXM.IStorageGroup storageGroup 
= new CDOEXM.StorageGroupClass();
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类            
//连接到指定的Exchange数据源
Exchange开发(六) ExchangeHelper类
            exchangeServer.DataSource.Open(serverName,null,ADODB.ConnectModeEnum.adModeRead,
Exchange开发(六) ExchangeHelper类                ADODB.RecordCreateOptionsEnum.adFailIfNotExists,ADODB.RecordOpenOptionsEnum.adOpenAsync,
Exchange开发(六) ExchangeHelper类                userName,password);
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类            
object[] groups = exchangeServer.StorageGroups as object[];
Exchange开发(六) ExchangeHelper类            storageGroup.DataSource.Open(groups[
0].ToString(),null,ADODB.ConnectModeEnum.adModeRead,
Exchange开发(六) ExchangeHelper类                ADODB.RecordCreateOptionsEnum.adFailIfNotExists,ADODB.RecordOpenOptionsEnum.adOpenAsync,
Exchange开发(六) ExchangeHelper类                userName,password);
Exchange开发(六) ExchangeHelper类            
object[] mailboxs = storageGroup.MailboxStoreDBs as object[];
Exchange开发(六) ExchangeHelper类            
return mailboxs[0].ToString();
Exchange开发(六) ExchangeHelper类        }

Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类 

Exchange开发(六) ExchangeHelper类        
/// 获取Exchange的第一个邮箱存储的LDAP路径
Exchange开发(六) ExchangeHelper类        
/// </summary>
Exchange开发(六) ExchangeHelper类        
/// <returns></returns>
Exchange开发(六) ExchangeHelper类        private static string GetFirstStoreMDB(string serverName)
{
Exchange开发(六) ExchangeHelper类            
return GetFirstStoreMDB(serverName,null,null);
Exchange开发(六) ExchangeHelper类        }

Exchange开发(六) ExchangeHelper类

Exchange开发(六) ExchangeHelper类        
/// 删除Exchange用户账户并同时删除AD账户
Exchange开发(六) ExchangeHelper类        
/// </summary>
Exchange开发(六) ExchangeHelper类        
/// <param name="userName">用户名称</param>
Exchange开发(六) ExchangeHelper类        public static void DeleteExchangeAccount(string adminName,string adminPassword,string userName)
{
Exchange开发(六) ExchangeHelper类            DeleteExchangeAccount(adminName,adminPassword,userName,
true);
Exchange开发(六) ExchangeHelper类        }

Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类

Exchange开发(六) ExchangeHelper类        
/// 删除Exchange用户账户并指示是否同时删除AD账户
Exchange开发(六) ExchangeHelper类        
/// </summary>
Exchange开发(六) ExchangeHelper类        
/// <param name="adminName"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="adminPassword"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="deleteADUser"></param>
Exchange开发(六) ExchangeHelper类        
/// <param name="userName"></param>
Exchange开发(六) ExchangeHelper类        public static void DeleteExchangeAccount(string adminName,string adminPassword,string userName,bool deleteADUser)
{
Exchange开发(六) ExchangeHelper类            DirectoryEntry user 
= ADHelper.FindObject(adminName,adminPassword,"user",userName);
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类            
//删除Exchange邮箱
Exchange开发(六) ExchangeHelper类
            CDOEXM.IMailboxStore mailbox = (CDOEXM.IMailboxStore)user.NativeObject;
Exchange开发(六) ExchangeHelper类            mailbox.DeleteMailbox();
Exchange开发(六) ExchangeHelper类            user.CommitChanges();
Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类            ADHelper.DeleteADAccount(adminName,adminPassword,userName);
Exchange开发(六) ExchangeHelper类        }

Exchange开发(六) ExchangeHelper类    }

Exchange开发(六) ExchangeHelper类}

Exchange开发(六) ExchangeHelper类
Exchange开发(六) ExchangeHelper类
  

 

在以上类中需要引用ADHelper类,有关ADHelper类请参考

Exchange开发(五) ADHelper类  http://www.cnblogs.com/jeseeqing/archive/2004/11/23/67438.html

相关文章: