如何使用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?的主要内容,如果未能解决你的问题,请参考以下文章