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對象是該代碼的開始之前的靜態對象和被重新使用。
謝謝。
更新:我也收到一些錯過的電子郵件(即我發送了220封電子郵件,其中20封是失敗的),所以技術上我應該在我的測試收件箱中有200封,但我只有192封,我的直覺是SMTP服務器正在花時間發送所有電子郵件,也許是由於電子郵件被錯過了,我正面臨超時,有什麼辦法可以追蹤SMTP是否忙? –