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

outlook does not recognize one or more names in Powershell

我正在尝试编写一个简单的 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>"

没有任何效果,returns每次都出现同样的错误。

提前致谢!

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

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

这样做会 return 收件人对象,然后您可以对其进行操作,例如,如果您想将它们放在抄送行而不是收件人行上,您可以这样做:

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

或者使用Resolve()方法根据用户通讯录解析地址。