Powershell send-mailmessage - 向多个收件人发送电子邮件

cul*_*ter 52 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
Run Code Online (Sandbox Code Playgroud)

CB.*_*CB. 82

$recipients = "Marcel <marcel@turie.eu>, Marcelt <marcel@nbs.sk>"
Run Code Online (Sandbox Code Playgroud)

string需要传递给类型(数组)send-mailmessagestring[]类型:

[string[]]$recipients = "Marcel <marcel@turie.eu>", "Marcelt <marcel@nbs.sk>"
Run Code Online (Sandbox Code Playgroud)

我认为没有强制转换为string []为powershell的强制规则做了工作:

$recipients = "Marcel <marcel@turie.eu>", "Marcelt <marcel@nbs.sk>"
Run Code Online (Sandbox Code Playgroud)

object[]类型,但可以做同样的工作.

  • 实际上你不需要"人性化"的名字.当你打电话时,一定要取消引用`$ recipients`.所以不要使用"$ recipients"`而是使用`$ recipients`,并使用以下格式填写它:`$ recipients ="<User1@domain.com>","<User2@domain.com>" ` (9认同)
  • 得到它:`Send-MailMessage -To @('email@gmail.com','email2@gmail.com')` (3认同)

Rub*_*nov 25

只需创建一个Powershell数组即可

$recipients = @("Marcel <marcel@turie.eu>", "Marcelt <marcel@nbs.sk>")
Run Code Online (Sandbox Code Playgroud)

相同的方法可用于附件

$attachments = @("$PSScriptRoot\image003.png", "$PSScriptRoot\image004.jpg")
Run Code Online (Sandbox Code Playgroud)

  • 我最喜欢你的解决方案。努伊斯·鲁巴诺夫 (2认同)

Ale*_*kin 7

要定义字符串数组,使用 $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
Run Code Online (Sandbox Code Playgroud)


小智 5

您必须首先将字符串转换为字符串数组,如下所示:

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

然后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
Run Code Online (Sandbox Code Playgroud)

  • 如何从字符串数组开始,像这样`$ recipients = @(“ Marcel &lt;marcel@turie.eu&gt;”,“ Marcelt &lt;marcel@nbs.sk&gt;”)) (2认同)

Zun*_*air 5

这是一个完整的(Gmail)和简单的解决方案......只需使用正常的; 分隔符.. 最适合作为参数传入。

$to = "user1@domain.org;user2@domain.org"
$user = "italerts@domain.org"    
$pass = "password"

$pass = ConvertTo-SecureString -String $pass -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential $user, $pass
$mailParam = @{
    To = $to.Split(';')
    From = "IT Alerts <italerts@domain.org>"
    Subject = "test"
    Body = "test"
    SmtpServer = "smtp.gmail.com"
    Port = 587 #465
    Credential = $cred
    UseSsl = $true
}

# Send Email
Send-MailMessage @mailParam
Run Code Online (Sandbox Code Playgroud)

Google Mail 的注意事项

  • 如果启用了“不太安全的应用程序”选项,这适用于 Gmail,但我们应该避免启用它。
  • 启用两步验证并使用“应用密码”,而不是“不太安全的应用”
  • 如果 587 不起作用,请使用端口 465。