System.Web.Mail.SmtpMail クラスは CDO (Collaboration Data Objects)を使ってメール送信を行います。
このクラスの Send メソッドを用いて、メールを送ってみます。
このメソッドにはオーバーロードが2種類あり、1つは送信元、送信先、題名、本文を引数とするもので、
もう1つは System.Web.Mail.MailMessage を引数とするものです。以下では後者の例を示します。
あて先(To、Cc、Bcc)にはセミコロン「;」区切りで複数のメールアドレスを含めることができます。
この例ではファイルの添付(これも複数可能)と SMTP 認証を行っています。
Dim message As New System.Web.Mail.MailMessage
Dim attachment As System.Web.Mail.MailAttachment
Try
message.BodyEncoding = System.Text.Encoding.GetEncoding("iso-2022-jp")
message.BodyFormat = Web.Mail.MailFormat.Text
message.Priority = Web.Mail.MailPriority.Normal
message.From = "わたし<watashi@mydomain.jp>"
message.To = "あなた<anata@yourdomain.jp>"
message.Cc = Nothing
message.Bcc = Nothing
message.Subject = "はろ~"
message.Body = "This mail was sent from WindowsApplication1." & ControlChars.CrLf & "お元気?"
attachment = New System.Web.Mail.MailAttachment("C:\pictures\omoide.jpg", Web.Mail.MailEncoding.Base64)
message.Attachments.Add(attachment)
message.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
message.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "アカウント名"
message.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "アカウントパスワード"
System.Web.Mail.SmtpMail.SmtpServer = "availableSmtpServer.mydomain.jp"
System.Web.Mail.SmtpMail.Send(message)
MessageBox.Show("メールを送信しました。", "Mail", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show("メールの送信に失敗しました 。" _
& ControlChars.CrLf _
& ex.GetType.ToString() _
& ControlChars.CrLf _
& ex.Message)
Finally
attachment = Nothing
message = Nothing
End Try
2006.02.11 追記
.NET Framework 2.0では、System.Web.Mail名前空間は旧形式とされ、System.Net.Mail名前空間のクラスを使うことが推奨されています。
System.Web.Mail.MailMessage → System.Net.Mail.MailMessage
System.Web.Mail.MailAttachment → System.Net.Mail.Attachment
System.Web.Mail.SmtpMail.SmtpServer → System.Net.Mail.SmtpClient
以下はSystem.Net.Mail名前空間のクラスを使ったメール送信の例です。
Imports System.Net.Mail
~~~~~~~~~~~~~~~~~~~~
Dim message As New MailMessage
Dim attachment As Attachment
Dim client As SmtpClient
Try
message.BodyEncoding = System.Text.Encoding.GetEncoding("iso-2022-jp")
message.IsBodyHtml = False
message.Priority = Net.Mail.MailPriority.Normal
message.Subject = "はろ~"
message.Body = "This mail was sent from WindowsApplication1." & ControlChars.CrLf & "お元気?"
message.From = New MailAddress("watashi@mydomain.jp", "わたし")
message.To.Add(New MailAddress("anata@yourdomain.jp", "あなた"))
message.To.Add(New MailAddress("dareka@somedomain", "だれか"))
attachment = New Attachment("C:\pictures\omoide.jpg", System.Net.Mime.MediaTypeNames.Image.Jpeg)
message.Attachments.Add(attachment)
client = New SmtpClient("availableSmtpServer.mydomain.jp")
client.UseDefaultCredentials = False
client.Timeout = 20000
Dim cred As New Net.NetworkCredential
cred.Domain = "mydomain.jp"
cred.UserName = "アカウント名"
cred.Password = "アカウントパスワード"
client.Credentials = cred
client.Send(message)
attachment.Dispose()
message.Dispose()
MessageBox.Show("メールを送信しました。", "Mail", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As SmtpException
MessageBox.Show("メールの送信に失敗しました 。" _
& ControlChars.CrLf _
& ex.Message _
& ControlChars.CrLf _
& ex.StatusCode)
End Try
End Sub