Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 检查SMTP是否正在运行或发送电子邮件失败_Vb.net_Smtp - Fatal编程技术网

Vb.net 检查SMTP是否正在运行或发送电子邮件失败

Vb.net 检查SMTP是否正在运行或发送电子邮件失败,vb.net,smtp,Vb.net,Smtp,我正在使用SMTP服务器发送电子邮件。 我希望在SMTP服务器关闭或电子邮件未送达时收到错误消息。 使用DeliveryNotificationOptions.OnFailure,我收到一封电子邮件,表示该电子邮件尚未送达。 我想得到一个错误。这可能吗? 如何检查SMTP是否正在运行 以下是我使用的代码: Dim serverName As String = "" Dim mailSenderInstance As SmtpClient = Nothing Dim AnEmailMessage

我正在使用SMTP服务器发送电子邮件。 我希望在SMTP服务器关闭或电子邮件未送达时收到错误消息。
使用DeliveryNotificationOptions.OnFailure,我收到一封电子邮件,表示该电子邮件尚未送达。
我想得到一个错误。这可能吗?
如何检查SMTP是否正在运行

以下是我使用的代码:

Dim serverName As String = ""
Dim mailSenderInstance As SmtpClient = Nothing
Dim AnEmailMessage As New MailMessage
Dim sendersEmail As String = ""
Try
    serverName = GetServerName("EMAIL_SERVER")
    mailSenderInstance = New SmtpClient(serverName, 25)
    sendersEmail = GetSendersEmail(msUserName)
    AnEmailMessage.From = New MailAddress(sendersEmail)

   'MAIL DETAILS
    AnEmailMessage.Subject = "New Email"
    AnEmailMessage.Body = "The Message"
    AnEmailMessage.To.Add(anEmailAddress)

    ' Delivery notifications
    AnEmailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure
    mailSenderInstance.UseDefaultCredentials = True 'False
    mailSenderInstance.Send(AnEmailMessage)

Catch ex As System.Exception
    MessageBox.Show(ex.ToString)
Finally
    AnEmailMessage.Dispose()
    mailSenderInstance.Dispose() 
End Try

在SMTP声明周围添加另一个try-catch块

try
   mailSenderInstance = New SmtpClient(serverName, 25)
catch ex as exception
    msgbox( "Error creating SMTP connection: " & ex.message)
end try

关于

好的,您想知道SMTP状态。SMTP作为服务运行。我编写了一个函数,让您了解系统中任何服务的状态。将对“System.ServiceProcess”的引用添加到项目中

''response: -1 = service missing, 0 = stopped or stopping, 1 = running

imports System.ServiceProcess ''add this at top 

Private Function GetServiceStatus(ByVal svcName As String) As Integer  
    Dim retVal As Integer
    Dim sc As New ServiceController(svcName)
    Try
        If sc.Status.Equals(ServiceControllerStatus.Stopped) Or sc.Status.Equals(ServiceControllerStatus.StopPending) Then
            retVal = 0
        Else
            retVal = 1
        End If
    Catch ex As Exception
        retVal = -1
    End Try
    Return retVal
End Function
像这样使用它:

'' use taskManager to figure correct service name
dim svStatus as integer = GetServiceStatus("SMTP") 
if svStatus <> 1 then 
  msgbox("Service not running or absent")
else
  ''write your send mail code here
end if
''使用taskManager计算正确的服务名称
dim svStatus as integer=GetServiceStatus(“SMTP”)
如果状态为1,则
msgbox(“服务未运行或不存在”)
其他的
''在这里写下你的发送邮件代码
如果结束

希望这对你有帮助

这有什么帮助?当服务器不运行时,它不会给我一个错误或一个小问题。我找不到任何与SMTP相关的服务?我使用的是windows 2007。您使用的是哪台web服务器?Exchange server正在另一台计算机上运行,我的计算机上有outlook