SMTP 连接在 Dispose 后需要时间连接
SMTP Connection takes time to connect after Dispose
我制作的用于批量发送电子邮件的应用程序有问题。所采取的步骤如下所述:
- 首先,建立 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("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 对象在代码开始之前是一个静态对象,正在被重新使用。
谢谢。
好吧,我通过购买 API 解决了这个问题。如果有人想知道,它来自名为 Mailbee 的 afterlogic,通常可以解决问题。
我制作的用于批量发送电子邮件的应用程序有问题。所采取的步骤如下所述:
- 首先,建立 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("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 对象在代码开始之前是一个静态对象,正在被重新使用。
谢谢。
好吧,我通过购买 API 解决了这个问题。如果有人想知道,它来自名为 Mailbee 的 afterlogic,通常可以解决问题。