我有一个场景,我需要一次发送100封电子邮件(使用循环),但我也不允许每个SMTP会话发送1封电子邮件。在.NET中调用SmtpClient.Dispose()是否安全?
现在,所有100封电子邮件都共享相同的SMTP会话。
我在想,调用SmtpClient.Dispose()将照顾我需要的东西。如果我错了,请纠正我。
所以,基本上3个问题:
- 威尔SmtpClient.Dispose()照顾我需要什么?
- 如果是,是否安全Dispose()SmtpClient而不影响 服务器上的其他服务?
- 如果不是,那么实现我想要的 的正确方法是什么?
示例代码:
Private Shared Sub SendMail(ByVal MailServer As SmtpClient, ByVal body As String, ByVal Subject As String, ByVal FromEmail As String, _
ByVal ToEmailList As String, Optional ByVal AttFile As Attachment = Nothing)
Dim message As New MailMessage
Try
message.From = New MailAddress(FromEmail)
message.Subject = Subject
message.IsBodyHtml = False
message.Body = body
message.Priority = MailPriority.High
If Not AttFile Is Nothing Then
message.Attachments.Add(AttFile)
Else
message.Attachments.Add(AttFile)
End If
MailServer.Send(message)
Catch ex As Exception
Throw New ApplicationException("SERVICE1.SendMail ERROR -- Error sending email [ERROR]:[" & ex.Message.ToString & "] " & vbCrLf & "To:" & ToEmailList & vbCrLf & "From:" & FromEmail & vbCrLf & "Subject: " & Subject & vbCrLf & "Body: " & body)
End Try
message.Dispose()
End Sub
这是怎么被执行的方法:
For Each Item In ItemListCollection
m_MailServer = New SmtpClient(MailServerName)
MailServer.Credentials = New System.Net.NetworkCredential(MailServerUserName, MailServerPassword)
SendMail(WeeklyMailServer, msgBody, msgSubject, MsgFromEmail, "[email protected]", rptAttachment)
Next
你能展示一部分代码,包括循环吗? – scartag
更新了示例代码 – Learner
听起来你的服务提供商想阻止你滥用他的服务。不,Dispose()方法不是您与服务提供商签订的合同义务的解决方法。您需要与您的提供商谈判另一份使用协议。 –