使用 Visual C# 创建一个启用了邮箱的收件人

来源:互联网 发布:php mvc实现原理 编辑:程序博客网 时间:2024/04/29 21:53

何使用 Visual C# 创建一个启用了邮箱的收件人

http://support.microsoft.com/kb/313114/zh-cn

查看本文应用于的产品

本页

·         概要

o        要求

·         更多信息

o        创建一个新的 C# 程序

o        代码说明

§         创建一个新的 DirectoryEntry

§         为新用户设置属性

§         创建一个新的邮箱

o        疑难解答

·         参考

展开全部 | 关闭全部

概要

本文分步介绍了如何使用 System.DirectoryServices 命名空间和 CDO for Exchange Management (CDOEXM)...

本文分步介绍了如何使用 System.DirectoryServices 命名空间和 CDO for Exchange Management (CDOEXM) 创建一个启用了邮箱的用户。

回到顶端

要求

下面列出了推荐使用的硬件、软件、网络基础设施以及所需的 Service Pack

·    安装了 Microsoft Exchange 2000 的基于 Microsoft Windows 2000 的域

·    Microsoft Visual C# 2005 Microsoft Visual C# .NET

·    运行此代码的计算机上有 Microsoft Exchange 2000 系统管理工具

回到顶端

更多信息

创建一个新的 C# 程序 Visual C# 2005 Visual C# .NET 中,创建一个新的名为 MBTest C# 控制台程序。 在解决...

创建一个新的 C# 程序

1.      Visual C# 2005 Visual C# .NET 中,创建一个新的名为 MBTest C# 控制台程序。

2.      在解决方案资源管理器中,右键单击引用,然后单击添加引用

3.      “.NET”选项卡上,添加一个对 System.DirectoryServices 命名空间的项目引用。

4.      “COM”选项卡上,添加一个到“Microsoft CDO for Exchange Management”的引用。

5.      Class1.cs 文件中的代码替换为下面的代码。

注意:在 Visual C# 2005 中,应替换 Program.cs 文件中的代码。

6.                         using System;

7.                         using CDOEXM;

8.                         using System.DirectoryServices;

9.                          

10.                     namespace MBTest

11.                     {

12.                          class Class1

13.                          {

14.                               [STAThread]

15.                               static void Main(string[] args)

16.                               {

17.                                    //TODO: Change these items to values for your domain or organization.

18.                                    string defaultNC = "DC=yourdomain,DC=com";

19.                                    string alias = "jsmith";

20.                                    string fullName = "Joseph Smith";

21.                                    string password = "TestMb123.";

22.                                    string domainName = "yourdomain.com";

23.                                    string homeMDB = "CN=Mailbox Store (Your Server),CN=Your Storage Group,"

24.                                              + "CN=InformationStore,CN=Your Server,CN=Servers,"

25.                                              + "CN=Your Administrative Group,CN=Administrative Groups,"

26.                                              + "CN=Your Org,CN=Microsoft Exchange,CN=Services,"

27.                                              + "CN=Configuration,DC=Yourdomain,DC=Com";

28.                      

29.                                    DirectoryEntry container, user;

30.                                    CDOEXM.IMailboxStore mailbox;

31.                      

32.                                    //This creates the new user in the "users" container.

33.                                    //Set the sAMAccountName and the password

34.                                    container = new DirectoryEntry("LDAP://cn=users," + defaultNC);

35.                                    user = container.Children.Add("cn=" + fullName, "user");

36.                                    user.Properties["sAMAccountName"].Add(alias);

37.                                    user.CommitChanges();

38.                                    user.Invoke("SetPassword", new object[]{password});

39.                                    

40.                                    //This enables the new user.

41.                                    user.Properties["userAccountControl"].Value = 0x200; //ADS_UF_NORMAL_ACCOUNT

42.                                    user.CommitChanges();

43.                      

44.                                    //Obtain the IMailboxStore interface, create the mailbox, and commit the changes.

45.                                    mailbox = (IMailboxStore)user.NativeObject;

46.                                    mailbox.CreateMailbox(homeMDB);

47.                                    user.CommitChanges();

48.                      

49.                                    return;

50.                               }

51.                          }

52.                     }

                                   

53.  更改 Main 函数的 TODO 部分中的变量,使它们包含用于您的域的正确值。

54.  编译此项目,然后运行该程序。

55.  启动 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 属性启用用户。

5.                         user.Properties["sAMAccountName"].Add(alias);

6.                         user.CommitChanges();

7.                         user.Invoke("SetPassword", new object[]{password});

8.                                        

9.                         //This enables the new user:

10.                     user.Properties["userAccountControl"].Value = 0x200; //ADS_UF_NORMAL_ACCOUNT

11.                     user.CommitChanges();

                           

创建一个新的邮箱

1.      要获取 IMailboxStore 接口,请将 DirectoryEntry.NativeObject 转换为此类型。如果计算机上没有安装 CDOEXM,此转换在运行时将不会成功。

2.      调用 CreateMailbox 方法,并将一个有效的可分辨名称传递给您的 Exchange 组织中的一个邮箱存储。

3.      调用 DirectoryEntry 上的 CommitChanges 以保存此新邮箱。

4.                         //Obtain the IMailboxStore interface, create the mailbox, and commit the changes.

5.                         mailbox = (IMailboxStore)user.NativeObject;

6.                         mailbox.CreateMailbox(homeMDB);

7.                         user.CommitChanges();

                           

回到顶端

疑难解答

·    您必须在域中有适当的权限才能创建用户和邮箱。通常情况下,要在一个基于 Windows 2000 的域中创建一个启用了邮箱的用户,您必须是该域的 Windows 2000 域管理员组成员。

·    如果运行此代码的计算机不是基于 Exchange 2000 Server 的,您必须在该计算机上安装 Exchange 2000 系统管理工具。如果不这样做,CDOEXM 将不可用,而且向 IMailboxStore 接口的转换将引发 InvalidCastException 响应:

未处理的“System.InvalidCastException”类型的异常出现在 MBTest.exe
其他信息:指定的转换无效。

·    如果您调用 IMailboxStore.CreateMailbox 时收到一条错误消息,请验证您传递给此方法的参数是否为您的组织中一个有效的邮箱存储。如果不是,您将收到类似以下内容的错误消息:

未处理的“System.Runtime.InteropServices.COMException”类型的异常出现在 MBTest.exe
其他信息:在服务器上没有这样一个对象。

回到顶端

 

原创粉丝点击