我正在尝试编写一个简单的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>"
没有任何效果,每次都会返回相同的错误。
提前致谢!
答案 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()
方法针对用户的地址簿解析地址。