2016-12-25 161 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中解决了这个问题。