【发布时间】:2016-05-30 19:18:29
【问题描述】:
我创建了用于检查 VPN 连接是否断开并尝试重新连接的脚本。它还发送电子邮件,当 1) 无法用远程 LAN 地址 ping VPN 服务器 2) VPN 连接失败 3) VPN 连接建立。
第一封电子邮件已正确发送和接收,但当 Powershell 必须发送另一封电子邮件时,它会出错。
vpn.ps1 文件内的代码:
$ip = "*.*.*.*"
$result = Get-WmiObject -Query "SELECT * FROM Win32_PingStatus WHERE Address = '$ip'"
if($result.StatusCode -eq 0) {
} else {
Start-Sleep -s 15
$EmailFrom = "*@*.*"
$EmailTo = "*@*.*"
$Subject = "###"
$Body = "#####################################################"
$SMTPServer = "*.*.*.*"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, ***)
#$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("*@*.*", "*************");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
rasdial.exe ********** /DISCONNECT
rasdial.exe ******** ****** ******
Start-Sleep -Seconds 15
$ip = "*.*.*.*"
$result = Get-WmiObject -Query "SELECT * FROM Win32_PingStatus WHERE Address = '$ip'"
if ($result.StatusCode -eq 0) {
$EmailFrom = "*@*.*"
$EmailTo = "*@*.*"
$Subject = "########"
$Body = "####################################"
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
} else {
Start-Sleep -s 15
$EmailFrom = "*@*.*"
$EmailTo = "*@*.*"
$Subject = "################"
$Body = "##########################################"
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}
}
运行时记录:
PS Microsoft.PowerShell.Core\FileSystem::***********> *******\vpn.ps1
#FIRST EMAIL SENT
No connections
Command completed successfully.
Connecting to *********...
Verifying username and password...
Registering your computer on the network...
Successfully connected to ******.
Command completed successfully.
Exception calling "Send" with "4" argument(s): "Failure sending mail."
At \\tsclient\C\New folder\vpn.ps1:26 char:9
+ $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SmtpException
PS Microsoft.PowerShell.Core\FileSystem::******
我已感应到用户名、密码、地址等。我的脚本有什么问题?
【问题讨论】:
-
"发送邮件失败。"是一般错误消息,通常表示无法找到或连接到
$SmtpServer -
但是第一封邮件发送正常。
-
您是否尝试过暂停几分钟(从 1 开始,然后是 5),然后再发送另一封邮件?也许 SMTP 服务器上有针对垃圾邮件的保护措施?
标签: email powershell smtp vpn