我寫過一個發送電子郵件的PowerShell腳本。最初我使用了Send-MailMessage命令行開關。在PowerShell中,有沒有辦法處理Send-MailMessage資源?
Send-MailMessage -SmtpServer $MailServer `
-To $MailTo `
-From $MailFrom `
-Subject $MailSubject `
-Body $MailBody
這是簡潔的。但是,如果我在工作站上連續快速執行腳本,PowerShell控制檯中會出現以下錯誤。
無法從傳輸連接讀取數據:已建立的 連接被主機中的軟件中止。
我懷疑是資源沒有被釋放或線程被阻止。下面是我目前的解決方法,它具有一次性使用的優點。而且我可以快速連續運行,無傳輸連接錯誤。但是這比Send-MailMessage更詳細。
[object]$SMTPClient = New-Object System.Net.Mail.SmtpClient
[object]$MailMessage = New-Object System.Net.Mail.MailMessage
$SMTPClient.Host = $MailServer
$MailMessage.To.Add($MailTo)
$MailMessage.From = $MailFrom
$MailMessage.Subject = $MailSubject
$MailMessage.Body = $MailBody
$SMTPClient.Send($MailMessage)
$MailMessage.Dispose()
$SMTPClient.Dispose()
是否有某種方式來強制,當我用它通過處置或者使用C#風格的語句來完成的,或許發送,以MAILMESSAGE釋放資源?謝謝。
聽起來像潛在的TCP端口耗盡,或者你正在通過遠程服務器獲取焦點。您嘗試發送多少條消息? –
一旦將它部署到服務器上,它實際上每天只會有一封電子郵件。 –