を使用してメールを送信しようとすると、奇妙な動作が発生しますThreading.ThreadPool
。
これは1年以上機能していますが、最近、コンテンツのない電子メールを断続的に送信すると述べています. 宛先と件名はすべて問題ありませんが、メールの残りの部分は空白です。コードに関しては何も変更されていません (実行するサーバーへの Windows の更新を除いて)。
これが私が使用しているコードです-問題が発生している場所を絞り込む方法について誰か提案がありますか? 空のメールを受信したと主張する人にメールを再送信すると、最初に送信されたものとまったく同じコードが使用されます。
電子メールを生成するサブ:
Public Sub EmailConfirmation(email As String,
firstname As String,
details As String)
Try
Dim embody As String = GlobalHelper.emailBody
'static class which loads the email text at application load for use later.
'This is a point of concern because it's obviously where the embody text is
'is loaded, but the issue is intermittent and if there was a failure here surely
'it would be caught by the 'try...catch' and a log of the error created (which has
'never happened). I also ran an experiment for a while where if this string was
'empty then create a log entry. After receiving a complaint of a blank email
'no error log was found.
embody = Replace(embody, "[FirstName]", firstname)
embody = Replace(embody, "[DATA]", details)
'create the mail message
Dim mail As New MailMessage()
'set the addresses
mail.From = New MailAddress("myemail@mydomain.com", "My Display Name")
mail.To.Add(email)
mail.IsBodyHtml = True
'set the content
mail.Subject = "Email Subject!"
mail.Body = embody
AddEmailToThreadPool(mail)
Catch ex As Exception
'if there is an error it is logged here.
End Try
End Sub
ThreadPool に追加する Sub:
Private Sub AddEmailToThreadPool(email As MailMessage)
System.Threading.ThreadPool.QueueUserWorkItem(New System.Threading.WaitCallback(AddressOf sendEmail), email)
End Sub
メールを送信するサブ:
Private Sub sendEmail(stateinfo As Object)
Dim email As MailMessage = CType(stateinfo, MailMessage)
Try
'send the message
Dim smtp As New SmtpClient("mail.mydomain.com")
smtp.Send(email)
Catch ex As Exception
'error is logged here.
End Try
End Sub