2009-12-28 3 views
0

나는 프로그램을 보내는 이메일을 만들고 있는데, 때로는 프로그램에 오류 메시지가 없지만 실제로 메일이 전송되지 않았기 때문에 메일이 실제로 전송되었는지 여부를 확인하는 방법을 알지 못합니다. try catch를 사용하는 것을 제외하고는이 문제를 어떻게 다룰 수 있습니까?코드 줄이 실제로 성공했는지 확인하는 방법은 무엇입니까?

Try 
    mail.From = New MailAddress(TextBox2.Text) 
    mail.To.Add(New MailAddress(TextBox1.Text)) 
    mail.Subject = TextBox4.Text 
    mail.Body = TextBox4.Text 
    mail.IsBodyHtml = True 
    Dim client As SmtpClient = New SmtpClient("smtp.gmail.com", 587) 
    If TextBox2.Text.Contains("@gmail.com") Then 
    client.EnableSsl = True 
    client.Credentials = New System.Net.NetworkCredential(TextBox2.Text, TextBox3.Text) 
    Try 
     client.Send(mail) 
    Catch ex As Exception 
     MessageBox.Show("Sending email failed. Please Try again") 
    End Try 
    End If 
Catch 
    MsgBox("Please input the correct value!") 
End Try 
ProgressBar1.Value = 100 
clear() 
+0

오늘 본 이메일에 대한 세 번째 질문입니다. –

답변

1

저는 일반적으로 이런 종류의 시도를 위해 try/catch를 사용합니다.

Generic Exception을 잡는 대신 SmtpExceptionSmtpFailedRecipientsException을 잡을 수 있습니다.

연결이 끊어 지거나 작업 시간이 초과되면 SmtpException이 발생합니다. SmtpFailedRecipientsException 메시지를 하나 이상의받는 사람에게 배달 할 수없는 경우이 throw됩니다.

변환 MSDN 코드

Try 
    client.Send(message) 
Catch ex As SmtpFailedRecipientsException 
    For i As Integer = 0 To ex.InnerExceptions.Length - 1 
     Dim status As SmtpStatusCode = ex.InnerExceptions(i).StatusCode 
     If status = SmtpStatusCode.MailboxBusy OrElse status = SmtpStatusCode.MailboxUnavailable Then 
      Console.WriteLine("Delivery failed - retrying in 5 seconds.") 
      System.Threading.Thread.Sleep(5000) 
      client.Send(message) 
     Else 
      Console.WriteLine("Failed to deliver message to {0}", ex.InnerExceptions(i).FailedRecipient) 
     End If 
    Next 
Catch ex As Exception 
    Console.WriteLine("Exception caught in RetryIfBusy(): {0}", ex.ToString()) 
End Try 
0

당신은 항상 true 또는 전송 상태의 false를 반환하는 부울 방법을 사용할 수 있습니다 :

여기 내 코드입니다.

오류가 없다면 emailId가 존재하는지 여부를 확인하십시오.

0

당신이로 실행할 수있는 또 다른 문제는 메일이 전송되고 있지만 인해 스팸 필터링이 점점되지 않는 것입니다. 하나의 이메일 주소로 작동하는 경우 Gmail 주소에 대한 TextBox2 확인을 무시하고 모두 작동해야합니다.

관련 문제