我写了一个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()
有没有一种方法可以通过Dispose或类似于C#的using语句来强制释放Send-MailMessage在使用完毕后的资源?谢谢。