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是否忙? –