2014-04-25 56 views
0

我正在使用SMTP服务器发送电子邮件。 我想在SMTP服务器关闭或电子邮件未送达时收到错误消息。
With DeliveryNotificationOptions.OnFailure我收到一封电子邮件,指出电子邮件尚未发送。
我想得到一个错误。这可能吗?
我如何检查SMTP是否正在运行?检查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 

回答

0

再添try catch块在你的SMTP声明

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

问候

+0

这将如何帮助?当服务器没有运行时,它不会给我一个错误 – Nianios

0

好吧,你想知道的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 

希望这将帮助你

+0

一个小问题。我找不到与SMTP有关的任何服务?我正在使用Windows 2007. – Nianios

+0

您正在使用哪个Web服务器? – Ranhot

+0

Exchange服务器正在另一台机器上运行,并在我的电脑中运行了前景 – Nianios