gpt4 book ai didi

powershell - 在 PowerShell 中,有没有办法处理 Send-MailMessage 资源?

转载 作者:行者123 更新时间:2023-12-01 10:28:36 25 4
gpt4 key购买 nike

我编写了一个用于发送电子邮件的 PowerShell 脚本。最初我使用 Send-MailMessage commandlet。

Send-MailMessage -SmtpServer $MailServer `
-To $MailTo `
-From $MailFrom `
-Subject $MailSubject `
-Body $MailBody

这是简洁的。但是,如果我在我的工作站上连续快速执行脚本,PowerShell 控制台中会出现以下错误。

Unable to read data from the transport connection: An established connection was aborted by the software in your host machine.

我怀疑资源未被释放或线程被阻塞。下面是我目前的解决方法,它的优点是一次性使用。而且我可以快速连续地运行它,而不会出现传输连接错误。但这比 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()

有没有什么方法可以强制 Send-MailMessage 在我用完后释放资源,也许是通过 Dispose 或 C# 风格的 using 语句?谢谢。

最佳答案

坦率地说,“它有效但冗长”不应该是一个大问题,尤其是当“冗长”意味着 10 行时。我的意思是,您可以使用类构造函数来简化语法:

$SMTPClient = New-Object -TypeName System.Net.Mail.SmtpClient -ArgumentList $MailServer
$MailMessage = New-Object -TypeName System.Net.Mail.MailMessage -ArgumentList $MailFrom, $MailTo, $MailSubject, $MailBody
$SMTPClient.Send($MailMessage)
$MailMessage.Dispose()
$SMTPClient.Dispose()

关于powershell - 在 PowerShell 中,有没有办法处理 Send-MailMessage 资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45308577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com