如何添加多个电子邮件地址?

时间:2013-10-23 21:02:54

标签: c# powershell visual-studio-2012 exchange-server-2010 runspace

以下是我正在使用的代码。我无法使用powershell Emailaddresses参数添加多个地址。如果我只输入一个电子邮件地址,代码工作正常,但是一旦我在下面的代码中添加了两个地址,它就会返回异常,说明无效的smtp地址。

PSCredential credential = new PSCredential(username, password);
WSManConnectionInfo connectionInfo = new WSManConnectionInfo((new Uri(liveIdconnectionUri)), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Default;

Runspace runspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace(connectionInfo);
PowerShell powershell = PowerShell.Create();
runspace.Open();
powershell.Runspace = runspace;

var secure = new SecureString();
foreach (char c in textBox5.Text)
{
    secure.AppendChar(c);
}

PSCommand command2 = new PSCommand();
command2.AddCommand("Set-Mailbox");
command2.AddParameter("Identity", "lferrigno");
command2.AddParameter("EmailAddressPolicyEnabled", 0);
command2.AddParameter("EmailAddresses", "SMTP:lferrigno@sscincorporated.com,lou.ferrigno@altegrahealth.com");

powershell.Commands = command2;
powershell.Invoke();

2 个答案:

答案 0 :(得分:1)

这是我最终使用的代码,因为它是一个集合。

     string[] smtp = { "SMTP:" + textBox6.Text, 9 + "smtp:" + textBox4.Text + "@sscincorporated.com" };
     command2.AddParameter("EmailAddresses", smtp);

答案 1 :(得分:0)

-EmailAddresses 参数采用数组参数(技术上是SmtpProxyAddress对象的集合,但这并不重要,您可以为它提供一个数组并且转换将以自动方式处理),但它看起来像你给它一个包含多个地址的字符串。您需要提供一个数组参数,其中每个元素都是一个地址,或者尝试这个:

command2.AddParameter("EmailAddresses","'SMTP:lferrigno@sscincorporated.com','SMTP:lou.ferrigno@altegrahealth.com'");

即使它仍然是C#代码中的字符串,如果它按原样传递给PowerShell,PowerShell会将其解释为数组。

您还应该省略SMTP:前缀,因为这是默认设置,如果您没有指定前缀,则会自动设置。