You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell脚本中添加多收件人?解决仅最后一个收件人收信问题

问题原因

你遇到的问题是因为System.Net.Mail.MailMessage的双参数构造函数(From, To)仅接受单个收件人地址字符串,当你传入数组'test1@test.com','test2@test.com'时,它只会把数组的最后一个元素作为收件人,导致第一个邮箱无法收到邮件。

解决方案

修改脚本中创建MailMessage对象的部分,改用To.Add()方法添加收件人即可解决。

方法1:循环添加收件人

##Send email functionality from below line, use it if you want   
$smtpServer = ""
$smtpFrom = "test@test.com"
$smtpTo = 'test1@test.com','test2@test.com'
$messageSubject = "Servers Health report"

# 创建空的MailMessage对象,手动添加发件人和收件人
$message = New-Object System.Net.Mail.MailMessage
$message.From = $smtpFrom
foreach ($toAddress in $smtpTo) {
    $message.To.Add($toAddress)
}

$message.Subject = $messageSubject
$message.IsBodyHTML = $true
$message.Body = "<head><pre>$style</pre></head>"
$message.Body += Get-Content C:\scripts\test.htm
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)

方法2:直接传入数组简化写法

MailMessage.To.Add()方法支持直接传入字符串数组,可省略循环:

##Send email functionality from below line, use it if you want   
$smtpServer = ""
$smtpFrom = "test@test.com"
$smtpTo = 'test1@test.com','test2@test.com'
$messageSubject = "Servers Health report"

$message = New-Object System.Net.Mail.MailMessage
$message.From = $smtpFrom
$message.To.Add($smtpTo) # 直接传入收件人数组

$message.Subject = $messageSubject
$message.IsBodyHTML = $true
$message.Body = "<head><pre>$style</pre></head>"
$message.Body += Get-Content C:\scripts\test.htm
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)
额外注意事项
  • 确保$smtpServer已正确配置SMTP服务器地址,否则可能导致邮件发送失败或被拦截。
  • 检查$style变量是否已提前定义,避免邮件头部出现空标签。
  • 若使用Gmail等第三方邮箱,可能需要启用SMTP权限或使用应用专用密码。

内容的提问来源于stack exchange,提问作者Arunkumar AK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:53:14