C#怎样给AD用户建立Exchange邮箱(不用CDOEXM)(转)_涅磐飞升的空间_百度空间.txtC#怎样给AD用户建立Exchange邮箱(不用CDOEXM)(转)_涅磐飞升的空间_百度空间.txt
C#怎样给AD用户建立Exchange邮箱(不用CDOEXM)(转)_涅磐飞升的空间_百度空间 用户
名: 密码: 登录 注册 涅磐飞升的空间 主页
博客 相册 个人档案 好友
查看文章
C#怎样给AD用户建立Exchange邮箱(不用CDOEXM)(转)
2010-08-31 23:48
这几天也被CDOEXM狠狠折磨了一把,按照下面MSDN的标准方法,添加鸟对CDOEXM的引用,
而且俺的cdo.dll,cd...
C#怎样给AD用户建立Exchange邮箱(不用CDOEXM)(转)_涅磐飞升的空间_百度空间.txt
C#怎样给AD用户建立Exchange邮箱(不用CDOEXM)(转)_涅磐飞升的空间_百度空间 用户
名: 密码: 登录 注册 涅磐飞升的空间 主页
博客 相册 个人档案 好友
查看文章
C#怎样给AD用户建立Exchange邮箱(不用CDOEXM)(转)
2010-08-31 23:48
这几天也被CDOEXM狠狠折磨了一把,按照下面MSDN的标准方法,添加鸟对CDOEXM的引用,
而且俺的cdo.dll,cdoexm.dll都是exchange
2000工作服务器上copy下来的,然后用下面MSDN提供的代码,报错,始终报错,一条道走
到黑的报错~说是:
System.Runtime.InteropServices.COMException (0x80072030): 在服务器上没有这样一个
对象。
mailbox = (IMailboxStore)user.NativeObject; mailbox.CreateMailbox(homeMDB);
user.CommitChanges();
我可以确定我的homeMDB扩展属性值绝对不会错,因为那是用微软自家windows系统的vbs
脚本直接导出到文本文件的,vbs脚本如下,后面还要用它导出homeMTA和
msExchHomeServerName
strBranchName="OU名1,OU=OU名0,OU=公司OU名"
'上面的几层路径的ou下面只有一个有邮箱的user
strDC="gdmailclus1" 'IIS服务器名
strDomain="DC=mail,DC=xxxx" 'AD服务器DN
strLDAP="
"
Set oLDAPConn = CreateObject("AdoDB.Connection")
oLDAPConn.Provider = "AdsDSOObject"
oLDAPConn.open
Set oCmd = CreateObject("AdoDB.Command")
oCmd.ActiveConnection = oLDAPConn
oCmd.CommandText =
strLDAP+";(objectCategory=Person);DistinguishedName,mail;SubTree"
Set oResult = oCmd.Execute
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile("C:\Documents and
Settings\szadmin\桌面\homeMDB.txt")
strGetUser="LDAP://"+strDC+"/"+oResult.Fields(0)
Set oUser = GetObject(strGetUser)
'wscript.echo
strGetUser+vbcrlf+"name:"+oUser.name+vbcrlf+"sAMAccountName:"+oUser.sAMAccountNa
me+vbcrlf+"serverName:"+oUser.serverName+vbcrlf+"Mail:"+oUser.Mail
f.WriteLine(oUser.homeMDB)
'wscript.echo oUser.homeMDB
'wscript.echo oUser.homeMTA
'wscript.echo oUser.mailNickName
'wscript.echo oUser.msExchUserAccountControl
'wscript.echo oUser.msExchHomeServerName
'wscript.echo oUser.mDBUseDefaults
'wscript.echo oUser.mail
f.close
而且,我又没法在exchange工作服务器上装开发环境,没法调试,只好上网找方法了。后来
在网上终于搜到,原来CDOEXM在C#下就是不好用,有转换那一步出错的,调了VB.net的一
个getobject可方法就ok,也有像我一样的问题的,说是要整个改成VB.net就好了。
天呢,我至此彻底晕倒,对微软的佩服再次上升鸟一层,都是自家的东东能搞成这样。。
幸好后来在一个跟帖里头找到了方法,原来根本不需要CDOEXM这个烂东东就可以完成建
exchange邮箱的工作,直接写几个AD扩展属性就可以鸟,代码如下:
user.Properties["homeMDB"].Value=homeMDB;
user.Properties["homeMTA"].Value=homeMTA;
user.Properties["mailNickName"].Add(dr["UserID"].ToString());
user.Properties["msExchUserAccountControl"].Add(0);
user.Properties["msExchHomeServerName"].Add("/o=MAIL001/ou=mailadmin/cn=Configur
ation/cn=Servers/cn=Mail-SERVER");
user.Properties["mDBUseDefaults"].Add("TRUE");
user.CommitChanges();
user是一个你找到的DirectoryEntry对象实例,dr是输入的数据集中的一个DataRow
homeMDB、homeMTA和msExchHomeServerName可以用上面的vbs脚本从服务器获得,脚本中
的strBranchName改成适合你的
我的这三个参数如下供参考:
private string homeMDB =
"CN=BE-SG2-MDB1,CN=GDMAIL-SG2,CN=InformationStore,CN=GDMAILEXCH,CN=Servers,CN=第
一个管理组,CN=Administrative
Groups,CN=xxxxORG,CN=Microsoft
Exchange,CN=Services,CN=Configuration,DC=mail,DC=xxxx";
private string homeMTA = "CN=Microsoft
MTA,CN=GDMAILEXCH,CN=Servers,CN=第一个管理组,CN=Administrative
Groups,CN=xxxxORG,CN=Microsoft
Exchange,CN=Services,CN=Configuration,DC=mail,DC=xxxx";
private string msExchHomeServerName =
"/o=GMCCORG/ou=GDMAILEXAG/cn=Configuration/cn=Servers/cn=GDMAILEXCH";
试过在我们的工作环境下不能同时写mail属性,会引发约束冲突异常,所以,之后要通过另
外一个vbs脚本批量改下默认邮件地址就可以。
改默认邮件地址的VBS:
strBranchName="深圳分公司"
strBranchDomain="sz."
strAll="gd.xxxx.com"
strDC="gdmailclus1"
strDomain="DC=mail,DC=xxxx"
strLDAP=""
Set oLDAPConn = CreateObject("AdoDB.Connection")
oLDAPConn.Provider = "AdsDSOObject"
oLDAPConn.open
Set oCmd = CreateObject("AdoDB.Command")
oCmd.ActiveConnection = oLDAPConn
oCmd.CommandText =
strLDAP+";(objectCategory=Person);DistinguishedName,mail;SubTree"
Set oResult = oCmd.Execute
wscript.echo oResult.Recordcount
while not oResult.EOF
strGetUser="LDAP://"+strDC+"/"+oResult.Fields(0)
Set oUser = GetObject(strGetUser)
'wscript.echo oUser.name
OldMail=oUser.mail
If (Len(OldMail)>0) Then
OldPrimaryEmail=Join(oUser.proxyAddresses,"!")
iNotChange=inStr(OldPrimaryEmail,"SMTP:"+oUser.samAccountName+"@"+strBranchDomain+strAll)
If (iNotChange=0) Then
OldPrimaryEmail=Replace(OldPrimaryEmail,"SMTP:","smtp:")
OldPrimaryEmail=Replace(OldPrimaryEmail,"smtp:"+oUser.samAccountName+"@"+strBranchDomain+strAll,"SMTP:"+oUser.samAccountName+"@"+strBranchDomain+strAll)
Newmail=oUser.samAccountName+"@"+strBranchDomain+strAll
'wscript.echo "mail-:"+ NewMail
'wscript.echo "proxy-:"+oldPrimaryEmail
strProxy=Split(OldPrimaryEmail,"!")
oUser.msExchPoliciesExcluded="{26491CFC-9E50-4857-861B-0CB8DF22B5D7}"
' oUser.msExchPoliciesExcluded=VBNull
oUser.Mail=Newmail
oUser.ProxyAddresses=strProxy
oUser.SetInfo
End If
End If
oResult.MoveNext
Wend
wscript.echo "done"
上一篇>> c#创建exchange邮箱问题,请教高... 下一篇>> CDOEXM操作(转kaneboy) 类别:asp.net | | 添加到搜藏 | 分享到i 贴吧 | 浏览(474) | 评论 () 网友评论
该篇文章没有任何评论。
发评论
内 容:
取消回复
推荐文章
韩国少女高价卖尿原汁原味价格合理
世界上最著名的菲尔人格测试
把身上的名牌脱掉,你什么都不是
以为洗白张柏芝,自己就不是婊子,
本文档为【C#怎样给AD用户建立Exchange邮箱(不用CDOEXM)(转)_涅磐飞升的空间_百度空间.txt】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。