2016-12-25 160 views
0

後,我有一個應用程序的問題,我做出批量發送電子郵件。其採取的步驟介紹如下:SMTP連接需要一定的時間來連接處置

  • 首先,SMTP連接時(使用匿名訪問)
  • 該應用發送出每批次10名的電子郵件(10是SMTP接收每個連接的限)
  • 當10個電子郵件被達到,則SMTP會話被設置,並創建新的。

我現在面臨的問題是,第三批之後,我開始要面對的超時問題,很多從SMTP(即應用程序或者說超時或無法發送的電子郵件),這熄滅,直到結束在221封電子郵件中,大約有20到30次失敗。

下面是我對這個編寫的代碼:

 Try 

     'create the mail message 
     Dim mail As New MailMessage() 

     'set the addresses 

     mail.From = New MailAddress("[email protected]") 


     If (ConfigurationManager.AppSettings("Setup").Equals("Testing")) Then 
      mail.[To].Add("[email protected]") 
      'mail.[To].Add("[email protected]") 
     Else 
      mail.[To].Add(recepient) 
      mail.[Bcc].Add("[email protected]") 
     End If 

     'set the content 

     mail.Subject = subject 

     mail.Body = body 


     smtp.Port = 25 



     'send the message 


     objWriter.WriteLine("Case No: " + CaseNo + "From: " + mail.From.ToString + "   " + "To: " + mail.To.ToString + "  " + "subject: " + mail.Subject.ToString + " Email Sent") 
     Console.WriteLine("Email Sent to the address: " + recepient) 

     ' Update handback email column 
     Updatehandback(CaseNo, "Yes") 


     mailcount = mailcount + 1 

    Catch ex As Exception 
     ex.StackTrace.ToString() 
     'objWriter.WriteLine(ex.Message.ToString + " " + ex.InnerException.ToString) 
     objWriter.WriteLine(ex.Message.ToString) 
     objWriter.WriteLine("Case No: " + CaseNo + " Email Not Sents") 
     ' Update handback email column 
     Updatehandback(CaseNo, "No") 
    End Try 



    ' Check to see if mail count has reached 9 
    If (mailcount = 9) Then 
     Console.WriteLine("***************MailCount Exhausted, Re-creating SMTP link******************") 
     smtp.Dispose() 
     mailcount = 0 
     Threading.Thread.Sleep(18000) 
     smtp = New SmtpClient("87.101.183.161") 
    End If 

普萊斯,有這方面的幫助,將不勝感激,因爲我一直停留在這一個星期,我已經聯繫SMTP提供商和他們說一切都已在他們的最後配置正確,並且他們沒有面對使用同一個SMTP服務器用於電子郵件的其他客戶端的任何問題。

此外,SMTP對象是該代碼的開始之前的靜態對象和被重新使用。

謝謝。

+0

更新:我也收到一些錯過的電子郵件(即我發送了220封電子郵件,其中20封是失敗的),所以技術上我應該在我的測試收件箱中有200封,但我只有192封,我的直覺是SMTP服務器正在花時間發送所有電子郵件,也許是由於電子郵件被錯過了,我正面臨超時,有什麼辦法可以追蹤SMTP是否忙? –

回答

0

嗯,我通過購買一個API解決了這個問題。如果有人想知道,它從稱爲Mailbee的afterlogic中解決了這個問題。