Dispose后,SMTP连接需要一些时间进行连接

时间:2016-12-25 12:07:03

标签: vb.net smtpclient

我遇到了一个问题,我发布了一个批量发送电子邮件的应用程序。采取的步骤如下所述:

  • 首先,建立SMTP连接(使用匿名访问)
  • 该应用每批发送10封电子邮件(10是SMTP为每个连接接受的限制)
  • 当达到10封电子邮件时,将放置SMTP会话并创建新会话。

我面临的问题是,在第3批之后,我开始面临很多来自SMTP的超时问题(即应用程序要么超时或未能发送电子邮件),这一直到最后都有关于221封电子邮件中有20到30封失败。

以下是我为此编写的代码:

      Try

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

        'set the addresses

        mail.From = New MailAddress("noreply@nasmiles.flynas.com")


        If (ConfigurationManager.AppSettings("Setup").Equals("Testing")) Then
            mail.[To].Add("Retroflynas@gmail.com")
            'mail.[To].Add("ironhide707@gmail.com")
        Else
            mail.[To].Add(recepient)
            mail.[Bcc].Add("Retroflynas@gmail.com")
        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对象在代码开始之前是一个静态对象,并且正在重新使用。

感谢。

1 个答案:

答案 0 :(得分:0)

我通过购买API解决了这个问题。如果有人想知道,它来自postlogic,叫做Mailbee,那通常解决了这个问题。