(ループを使用して) 1 回のショットで 100 通の電子メールを送信する必要があるシナリオがありますが、SMTP セッションごとに 1 つの電子メールを送信することも許可されていません。
現在、100 通の電子メールすべてが同じ SMTP セッションを共有しています。
SmtpClient.Dispose() を呼び出すと、必要なものが処理されると考えていました。間違っている場合は修正してください。
したがって、基本的に3つの質問:
- SmtpClient.Dispose() は必要なものを処理してくれますか?
- はいの場合、サーバー上の他のサービスに影響を与えずに SmtpClient を Dispose() しても安全ですか?
- いいえの場合、私が望むものを達成するための正しいアプローチは何ですか?
サンプルコード:
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, "xyz@abc.com", rptAttachment)
Next