示したコードのように、VB.NET を介してメールを送信しています。
Dim retval As Integer
Dim attachment As System.Net.Mail.Attachment = Nothing
If fileName <> "" Then
attachment = New System.Net.Mail.Attachment(fileName)
End If
Dim client As New SmtpClient()
With client
.EnableSsl = True
.Host = smtpServerAddress
.Port = 587
.DeliveryMethod = SmtpDeliveryMethod.Network
.UseDefaultCredentials = False
.Credentials = New NetworkCredential(FromEmailId, password)
AddHandler .SendCompleted, AddressOf SendCompletedCallback
End With
Dim mail = New MailMessage(FromEmailId, toEmailId)
With mail
.Priority = MailPriority.High
.Subject = subject
.SubjectEncoding = System.Text.Encoding.UTF8
.IsBodyHtml = False
If fileName <> "" Then
.Attachments.Add(attachment)
End If
.Body = msgBody
.BodyEncoding = System.Text.Encoding.UTF8
End With
Try
client.SendAsync(mail, "")
retval = 1
Catch ex As Exception
retval = 0
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
Return retval
この作品はいいですね。問題は、インターネットに接続していない場合、Try/Catch ブロックが期待どおりに反応しないことだけです。メールが送信されなかったことを知る唯一の方法は、コールバックからのメッセージを受信していないことです。これには長い時間がかかる可能性があります。また、メールが正常に送信されるなどの関数から 1 が返されます。
インターネット接続が存在するかどうか、およびメールの送信が開始されているかどうかを確認する通常の方法はどれですか?