Powershell发送邮件消息 – 发送给多个收件人

我有这个PowerShell脚本来发送附件的电子邮件,但是当我添加多个收件人,只有第一个获取消息。 我已阅读文档,仍然无法弄清楚。 谢谢

$recipients = "Marcel <marcel@turie.eu>, Marcelt <marcel@nbs.sk>" Get-ChildItem "C:\Decrypted\" | Where {-NOT $_.PSIsContainer} | foreach {$_.fullname} | send-mailmessage -from "primasfrb@nbs.sk" ` -to "$recipients" ` -subject "New files" ` -body "$teloadmin" ` -BodyAsHtml ` -priority High ` -dno onSuccess, onFailure ` -smtpServer 192.168.170.61 
 $recipients = "Marcel <marcel@turie.eu>, Marcelt <marcel@nbs.sk>" 

是你需要传递的string[]typessend-mailmessage一个string[]types(一个数组):

 [string[]]$recipients = "Marcel <marcel@turie.eu>", "Marcelt <marcel@nbs.sk>" 

我认为不是强制转换为string []为强制强制规则的作用:

 $recipients = "Marcel <marcel@turie.eu>", "Marcelt <marcel@nbs.sk>" 

object[]types,但可以做同样的工作。

只是创build一个Powershell数组将会诀窍

 $recipients = @("Marcel <marcel@turie.eu>", "Marcelt <marcel@nbs.sk>") 

附件可以使用相同的方法

 $attachments = @("$PSScriptRoot\image003.png", "$PSScriptRoot\image004.jpg") 

没错,每个地址都需要引用。 如果您在命令行中列出了多个地址,则如果您同时指定了人性化邮件地址和电子邮件地址部分,那么Send-MailMessage就会喜欢它。

要定义一个string数组,使用$ var = @('User1','User2')会更舒服。

 $servername = hostname $smtpserver = 'localhost' $emailTo = @('username1 <user1@dom.com>', 'username2<user2@dom.com>') $emailFrom = 'SomeServer <user3@dom.com>' Send-MailMessage -To $emailTo -Subject 'Low available memory' -Body 'Warning' -SmtpServer $smtpserver -From $emailFrom 

发送一个.NET / C#powershell电子邮件使用这样一个结构:

为了获得最佳的行为,用这样的方法创build一个类

  using (PowerShell PowerShellInstance = PowerShell.Create()) { PowerShellInstance.AddCommand("Send-MailMessage") .AddParameter("SMTPServer", "smtp.xxx.com") .AddParameter("From", "xxx@xxx.com") .AddParameter("Subject", "xxx Notification") .AddParameter("Body", body_msg) .AddParameter("BodyAsHtml") .AddParameter("To", recipients); // invoke execution on the pipeline (ignore output) --> nothing will be displayed PowerShellInstance.Invoke(); } 

因此这些实例被调用的函数如下所示:

  public void sendEMailPowerShell(string body_msg, string[] recipients) 

永远不要忘记为接收者使用一个string数组,如下所示:

 string[] reportRecipient = { "xxx <xxx.Fercher@xxx.com>", "xxx <xxx@xxx.com>" }; 

body_msg

这个消息可以作为方法本身的参数被宽恕,HTML编码启用!

收件人

千万不要忘记在多个收件人的情况下使用string数组,否则只会使用string中的最后一个地址!

调用函数可以看起来像这样:

  mail reportMail = new mail(); //instantiate from class reportMail.sendEMailPowerShell(reportMessage, reportRecipient); //msg + email addresses 

ThumbUp

您必须先将string转换为string数组 ,如下所示:

 $recipients = "Marcel <marcel@turie.eu>,Marcelt <marcel@nbs.sk>" [string[]]$To = $recipients.Split(',') 

然后使用Send-MailMessage像这样:

 Send-MailMessage -From "primasfrb@nbs.sk" -To $To -subject "New files" -body "$teloadmin" -BodyAsHtml -priority High -dno onSuccess, onFailure -smtpServer 192.168.170.61