メールの送信
サンプル コードのダウンロード (vbmigtips_mail.exe, 98.7 KB)
メールの送信機能を持ったアプリケーションを作成する場合、Visual Basic 6.0 では、Microsoft MAPI Controls 6.0 を使用していました。一方、Visual Basic .NET では、System.Web.Mail 名前空間 の SmtpMail クラスを使用しメールの送信機能を実裝することができます。Mail.SmtpMail クラスは、CDOSYS (Collaboration Data Objects for Windows 2000) メッセージ コンポーネントを使用して、メール送信を実現しています。そこで今回は、Visual Basic .Net でメールの送信機能を持ったアプリケーション (図1) を作成する方法を紹介します。
図1
「送信」ボタンをクリックすると、メールが送信され送信終了のメッセージボックスが表示されます。「送信」ボタンの実裝コードは以下のとおりです (事前に、[參照設定]で「System.Web」を追加しておく必要があります)。
$False$
Private mm As New System.Web.Mail.MailMessage
Private ma As System.Web.Mail.MailAttachment
Private file As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
mm.From = txtForm.Text
mm.To = txtTo.Text
mm.Subject = txtSubject.Text
mm.Body = txtBody.Text
If file <> Nothing Then
ma = New System.Web.Mail.MailAttachment(file, Web.Mail.MailEncoding.Base64)
mm.Attachments.Add(ma)
End If
System.Web.Mail.SmtpMail.Send(mm)
txtForm.Clear()
txtTo.Clear()
txtSubject.Clear()
txtBody.Clear()
Me.Refresh()
MessageBox.Show("メールを送信しました。", "送信終了")
Catch ex As Exception
MessageBox.Show("送信できませんでした。", "エラー")
End Try
End Sub リスト1
MailMessage クラスの From プロパティに差出人 (受信者) を、To プロパティに送信先を、Subject プロパティにメールの件名を、 Body プロパティにメールの本文をそれぞれ設定します。また、Attachments プロパティで本文とともに送信する添付ファイルを設定します。上記 (リスト1) のコードを実裝し、図1 の「送信」ボタンをクリックすると、メールが送信されます。そして、各テキストボックスのデータが削除され、図2 の送信完了の通知が表示されます。
図2
リスト1 を実裝しても、添付ファイルを送信することはできません。次は、下記のコードを実裝して、添付ファイルを指定できるようにします。
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim ofd As New OpenFileDialog
ofd.InitialDirectory = "C:\work"
ofd.Filter = "すべてのファイル(*.*)|*.*"
ofd.Title = "添付するファイルを選択してください"
ofd.RestoreDirectory = True
If ofd.ShowDialog() = DialogResult.OK Then
file = ofd.FileName
txtAttachment.Text = System.IO.Path.GetFileName(file)
End If
End Sub リスト2
図1 の「...」ボタンをクリックすると、ダイアログボックス (図3) を開き、添付するファイルを指定します。
図3
上記 (リスト2) の「ofd.InitialDirectory = "C:\work"」でダイアログボックスが表示されたときのデフォルトフォルダを指定します。「ofd.Filter = "すべてのファイル(*.*)|*.*"」で[ファイルの種類]に表示される選択肢を指定し、「ofd.Title = "添付するファイルを選択してください"」でダイアログボックスのタイトルを指定します。そして、「If ofd.ShowDialog() = DialogResult.OK Then」の「ofd.ShowDialog()」でダイアログボックスを表示し、[OK]ボタンをクリックされると、「file = ofd.FileName」で選択されたファイル名 (パス) を取得し、「txtAttachment.Text = System.IO.Path.GetFileName(file)」で、拡張子を含むファイル名のみをテキストボックスに表示されます (図4)。ファイルパスからファイル名 (拡張子を含む) を取得する場合、System.IO 名前空間の Path クラスで GetFileNameメソッドを使用します。
図4
これにより、図1 のアプリケーションで添付するファイルを指定し、メールで送信することができます。