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