设为首页 收藏本站
查看: 1317|回复: 0

[经验分享] 创建Exchange邮箱用户

[复制链接]

尚未签到

发表于 2015-9-10 12:34:19 | 显示全部楼层 |阅读模式
概要
本分步指南介绍了如何使用 System.DirectoryServices 命名空间和 CDO for Exchange Management (CDOEXM) 创建一个启用了邮箱的用户
需要
1:安装了 Exchange 2000 的一个基于 Microsoft Windows 2000 的域,配置如下:

http://www.bitscn.com/windows/exchange/200705/103952.html
2:在此代码运行的电脑上有 Microsoft Exchange 2000 系统管理工具

创建新的 C# 程式
1: 在 Visual C# .NET 中,新建一个名为 MBTest 的 C# 控制台程式
2:添加一个System.DirectoryServices 的.net引用
3:添加一个到Microsoft CDO for Exchange Management的COM引用
4:代码如下:

DSC0000.gif DSC0001.gif Code
using System;
using CDOEXM;
using System.DirectoryServices;

namespace MBTest
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            string defaultNC = "DC=GROUPPOWER,DC=local";//根据域来改变值
            string alias = "dingfeng";
            string fullName = "wudingfeng";
            string password = "TestMb123.";//注意密码复杂度
            string domainName = "grouppower.local";
            /*string homeMDB = "CN=邮箱存储(服务器名),CN=第一个存储组,"
                + "CN=InformationStore,CN=服务器名,CN=Servers,"
                + "CN=第一个管理组,CN=Administrative Groups,"
                + "CN=第一个组织,CN=Microsoft Exchange,CN=Services,"
                + "CN=Configuration,DC=域名,DC=域名后缀";*/
            string homeMDB = "CN=邮箱存储(client),CN=第一个存储组,CN=InformationStore,CN=client,CN=Servers,CN=第一个管理组,CN=Administrative Groups,CN=Grouppower,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=grouppower,DC=local";
            DirectoryEntry container = null, user = null;
            CDOEXM.IMailboxStore mailbox;
            //创建具有用户组权限的用户和密码
            container = new DirectoryEntry("LDAP://cn=users," + defaultNC);
            user = container.Children.Add("cn=" + fullName, "user");
            user.Properties["sAMAccountName"].Add(alias);
            user.CommitChanges();
            user.Invoke("SetPassword", new object[] { password });
            user.Properties["userAccountControl"].Value = 0x200; //ADS_UF_NORMAL_ACCOUNT
            user.CommitChanges();
            mailbox = (IMailboxStore)user.NativeObject;//Obtain the IMailboxStore interface, create the mailbox, and commit the changes.
            mailbox.CreateMailbox(homeMDB);
            user.CommitChanges();
            return;
        }
    }
}


5:更改 Main 函数的 TODO 部分中的变量,使他们包含针对您的域的适当的值
6:编译此项目,然后运行
7:启动 Microsoft 管理控制台 (MMC) 中的“Active Directory 用户和电脑”管理单元,确认是否已在域中创建了新帐户。您会在“用户”容器中看到此新用户。如要检查此用户是否启用了邮箱,请查看该用户的属性中是否出现了“Exchange”选项卡,连同“Exchange 常规”选项卡上是否为该用户列出了一个邮箱存储

代码说明
创建新的 DirectoryEntry
此代码演示了如何绑定到容器(在本例中为“用户”容器),连同如何在该容器中创建一个新用户。不要忘记表示新用户名的“cn=”项:
container = new DirectoryEntry("LDAP://cn=users," + defaultNC);user = container.Children.Add("cn=" + fullName, "user");

在新用户上配置属性
1:给 sAMAccountName 赋一个值。这是个必需属性;假如您不指定值,就不会创建用户帐户
2:因为您已提供了必需属性,所以要调用 CommitChanges 将新用户保存到目录中
3:调用 IADs::SetPassword 以配置密码。调用 CommitChanges 之后必须这样做
4:通过修改 userAccountControl 属性启用用户:

Code
user.Properties["sAMAccountName"].Add(alias);
user.CommitChanges();
user.Invoke("SetPassword", new object[] { password });//This enables the new user.
user.Properties["userAccountControl"].Value = 0x200; //ADS_UF_NORMAL_ACCOUNT
user.CommitChanges();

创建新邮箱
1:为获得 IMailboxStore 接口,请将 DirectoryEntry.NativeObject 强制转换为此类型。假如电脑上没有安装 CDOEXM,此强制转换在运行时将不能成功.
2:调用 CreateMailbox 方法,并将一个有效的可分辨名称传递给您的 Exchange 组织中的一个邮箱存储,调用 DirectoryEntry 上的 CommitChanges 以保存此新邮箱:


Code
//Obtain the IMailboxStore interface, create the mailbox, and commit the changes.
mailbox = (IMailboxStore)user.NativeObject;
mailbox.CreateMailbox(homeMDB);
user.CommitChanges();  
  疑难解答
  1:您必须在域中有适当的权限才能创建用户和邮箱。通常情况下,要在一个基于 Windows 2000 的域中创建一个启用了邮箱的用户,您必须是该域的 Windows 2000 域管理员组中的一名成员。假如此代码在不是基于 Exchange 2000 Server 的电脑上运行,您必须在该电脑上安装 Exchange 2000 系统管理工具。假如不这样做,则 CDOEXM 将不可用,而且向 IMailboxStore 的强制转换将导致返回 InvalidCastException 响应:
  An unhandled exception of type 'System.InvalidCastException' occurred in MBTest.exe
Additional information:Specified cast is not valid
  2:假如您调用 IMailboxStore.CreateMailbox 时收到一条错误信息,请确认您传递给此方法的参数是不是您的组织中一个有效的邮箱存储。假如不是,您将收到类似于下面的错误信息:
  An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in MBTest.exe bitsCN.Com
Additional information:There is no such object on the server.
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-111950-1-1.html 上篇帖子: Exchange 2007 队列数据库、队列事务日志文件超过临界值(阈值)导致无法接受邮件解决方案 下篇帖子: 使用EWS访问Exchange邮件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表