Tips - Visual Basic

【TOP】

SmtpMailクラスでメールを送信する
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") 'エンコード 日本語(JIS) 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) ' SMTP認証を行う場合 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") = "アカウントパスワード" ' SMTPサーバを指定する。 System.Web.Mail.SmtpMail.SmtpServer = "availableSmtpServer.mydomain.jp" ' メールを送信する。 System.Web.Mail.SmtpMail.Send(message) MessageBox.Show("メールを送信しました。", "Mail", MessageBoxButtons.OK, MessageBoxIcon.Information) ' 大抵はSystem.Web.HttpException ('CDO.Message'オブジェクトにアクセスできませんでした。) 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) ' SMTPサーバを指定する。 client = New SmtpClient("availableSmtpServer.mydomain.jp") ' SMTP認証情報を設定する。(認証が必要な場合のみ) 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
【戻る】