outlook在Powershell中无法识别一个或多个名称

时间:2018-02-27 17:29:10

标签: powershell powershell-v5.0

我正在尝试编写一个简单的PowerShell脚本来发送邮件,我写的代码是:

$recipients = "'abc@abcd.com', 'def@abcd.com'"

$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = $recipients
$Mail.Subject = "Action"
$Mail.Body ="Pay rise please"
$Mail.Send()

这适用于一个收件人,但是一旦我想添加多个联系人并运行脚本,就会说

Outlook does not recognize one or more names. 
At line:10 char:1
+ $Mail.Send()
+ ~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

我尝试了多种方法来使用以下方法定义收件人列表:

"'abc@abcd.com', 'def@abcd.com'"
"abc@abcd.com", "def@abcd.com"
"abc@abcd.com, def@abcd.com"
"<abc@abcd.com>, <def@abcd.com>"

没有任何效果,每次都会返回相同的错误。

提前致谢!

1 个答案:

答案 0 :(得分:2)

如果您使用的是Outlook的ComObject,则可以使用Recipients属性的Add()方法将多个收件人添加到电子邮件中,例如:

'abc@abcd.com','def@abcd.com'|ForEach{$Mail.Recipients.Add($_)}

执行此操作将返回收件人对象,然后您可以对其进行操作,例如,如果您想将它们放在CC行而不是您可以执行的To行:

$Recipients = 'abc@abcd.com','def@abcd.com'|ForEach{$Mail.Recipients.Add($_)}
$Recipients | ForEach{$_.Type = 2}

或使用Resolve()方法针对用户的地址簿解析地址。