Powershell:發送大量信件

因應公司要在指定時間發送大量信件通知客戶,所以借用之前發信的程式修改一下。
可以直接提取指定txt檔案裡面的Email Address來送信。
前提是帳號在AD上有整合Exchange才有辦法透過Script排程直接送信不經由Outlook


1
2
3
4
5
6
7
8
9
$Sender = 'abc@xxx.com'
$Subject = "Test Letter"
$Body = "Test Letter!"
$Body += "Thanks a lot."
ForEach($Recipient in (Get-Content -Path "D:\List\Users.txt"))
{
    Send-MailMessage -From $Sender -To $Recipient -Subject $Subject -SmtpServer smtp.xxx.com -bodyashtml -Body $Body
    start-sleep -s 5
}

-Sender:就是這個帳號所屬的Email Address,不能亂填,不然可能會被拒絕發送
-Subject:信件主旨
-Body:信件內容透過+=可以把信件分行慢慢加上去。收件者可以讀HTML,你也可以慢慢兜成HTML格式的郵件
-SmtpServer:郵件送信伺服器
然後透過Foreach指定收件者參數,文字檔Email一筆為一行放好即可。
Start-sleep -s 5,每發一封間隔五秒,避免被Server直接擋掉。
如果想研究Send-MailMessage這指令,可以到微軟官網這裡看看。