Powershell脚本以较小批量读取文本文件。

时间:2017-09-03 17:19:25

标签: powershell email smtp exchange-server

我在发送SMTP电子邮件时遇到了一个问题,大约是一些电子邮件地址。 200.我正在寻找一个脚本,在该脚本中,它读取包含200个电子邮件地址的.txt文件,并且批量较小,使用下面的脚本发送通用SMTP消息。

发送通用电子邮件的脚本如下:

$to = "TO EMAIL"
$smtp = "SMTP Server"
$from = "FROM EMAIL"
$subject = "Subject" 
$body = "EMAIL BODY"
send-MailMessage -SmtpServer $smtp -To $to -Bcc (Get-Content "\\FILE Location") -From $from -Subject $subject -Body $body -BodyAsHtml -Priority high

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是一个解决方案(可能还有其他/更好的方法):

$to = "TO EMAIL"
$smtp = "SMTP Server"
$from = "FROM EMAIL"
$subject = "Subject" 
$body = "EMAIL BODY"

$Recipient = Get-Content "emails.txt"
$NumberOfBatches = [int]($Recipient.count / 50)

For ($i = 0; $i -lt $NumberOfBatches; $i++) { 
    $Emails = $Recipient | Select -First 50 -Skip ($i * 50)
    Send-MailMessage -SmtpServer $smtp -To $to -Bcc $Emails -From $from -Subject $subject -Body $body -BodyAsHtml -Priority high
}

这会将电子邮件地址列表加载到名为$Recipient的变量中。

然后计算每次发送50封电子邮件需要多少批次,将其转换为[int]以获得一个整数。

然后使用For循环来执行定义的批次数,并使用Select-Object cmdlet按定义的批次过滤电子邮件列表,方法是使用-First和{ {1}}。