如何使用c#在Exchange邮件服务器中连接和创建新的邮件ID?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用c#在Exchange邮件服务器中连接和创建新的邮件ID?相关的知识,希望对你有一定的参考价值。

我正在从c#添加活动目录用户,我需要使用Exchange邮件服务器为这些用户创建电子邮件ID。如何使用c#检查和创建新的邮件ID?

答案

我做到了这一点,这很痛苦。在Exchange中以编程方式执行任何操作的唯一方法是通过PowerShell,这意味着您必须从C#运行PowerShell命令。

理想情况下,您可以打开与其中一台Exchange服务器的远程PowerShell会话。微软确实有一个如何在这里做到这一点的例子:Get a list of mail users by using the Exchange Management Shell

创建远程PowerShell会话看起来像这样,它使用Kerberos进行身份验证并运行PowerShell命令Get-Users -ResultSize 10

var connectionUri = "https://<server>/PowerShell";
var remoteMachineCredentials = new PSCredential(domainAndUserName, securePassword);

WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
        new Uri(connectionUri),
        "http://schemas.microsoft.com/powershell/Microsoft.Exchange",
        remoteMachineCredentials) 

    AuthenticationMechanism = AuthenticationMechanism.Kerberos,
    SkipRevocationCheck = true

using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo)) 
    using (PowerShell powershell = PowerShell.Create()) 
        powershell.AddCommand("Get-Users");
        powershell.AddParameter("ResultSize", 10);
        runspace.Open();

        powershell.Runspace = runspace;
        var results = powershell.Invoke();
        //do something with the results
    

您还可以使用AuthenticationMechanism.NegotiateWithImplicitCredential对您的应用运行的凭据进行身份验证,如果这是您需要的。

我使用SkipRevocationCheck = true跳过服务器SSL证书的吊销检查。在我的环境中,我运行它的服务器没有Internet访问权限,因此撤销检查失败。这对你来说可能是也可能不对。

您可以在不使用远程PowerShell的情况下执行此操作,但它涉及在运行应用程序的计算机上安装Exchange管理工具,还有一些其他复杂情况。尽量避免这种情况。如果可以,请使用远程PowerShell。

一旦你想出来,你可以运行任何PowerShell命令,如New-Mailbox

当然,您将要阅读PowerShell响应的结果,因此还有另一篇关于如何使用Use the Exchange Management Shell cmdlet response的文章。

请注意,PowerShell错误在默认情况下不会终止(它们不会引发异常),因此每次运行命令时都必须检查是否存在错误。为此,请查看powershell.Streams.Error集合。

以上是关于如何使用c#在Exchange邮件服务器中连接和创建新的邮件ID?的主要内容,如果未能解决你的问题,请参考以下文章

Exchange 2013 配置邮件流

如何使用Exchange 2010收发外部邮件

Exchange Server 2010的角色

exchange老是显示无法连接服务器怎么办

outlook如何收取exchange服务器邮件?

Exchange调整入站SMTP连接超时时间