デフォルトメーラーを起動する方法

Cc440860.download(ja-jp,MSDN.10).gif サンプル コードのダウンロード (vbmigtips_DefaultMail.msi, 471 KB)

デフォルトのメーラーを使用してメールの送信を行う場合、Visual Basic 6.0 では、Microsoft MAPI Controls 6.0 を使用していました。一方、Visual Basic .NET では、Process クラスの Start メソッドを使用して新規メール作成ウィンドウを表示します。そこで今回は、図1 のテキストボックス内のデータを本文の値に設定した新規メール作成ウィンドウを表示する方法を紹介します。

 Cc440860.DefaultMail_fig01(ja-jp,MSDN.10).jpg
 図1

Process クラスの Start メソッドに「mailto:」で始まる文字列を指定することで、デフォルトのメーラーを起動することができます。メーラーの新規メール作成ウィンドウを起動する際、「mailto:」の後に指定したメール アドレスが宛先欄に記述されます。また、件名 (= subject) や本文 (= body) などを記述する場合、宛名 (mailto: メールアドレス) の後に「?」で続けて記述します。実装コードは以下のとおりです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strBody As String
strBody = textBox1.Text
Process.Start("mailto:Test@xxx.co.jp?subject=報告&body=" & strBody)
End Sub

リスト1

リスト1の「Process.Start("mailto:Test@xxx.co.jp?subject=メーラーの起動&body=" & strBody)」で 、宛先 (= mailto) 「Test@xxx.co.jp」、メールの件名 (= subject) 「メーラーの起動」、本文 (= body) 「strBody (テキストボックス内のデータ) 」の値を指定した新規メールウィンドウが表示されます。上記を実装し、[メーラーの起動]ボタン (図1) をクリックすると図2 が表示されます。

 Cc440860.DefaultMail_fig02(ja-jp,MSDN.10).jpg
 図2

上記では、改行されたデータも、図2 のように改行されずに表示されます。これは、新規メール作成ウィンドウを起動する場合、すべての文字がそのまま使用できるとは限らないからです。そのまま使用できない文字は、文字コード表示に置き換えて使用する必要があります。たとえば、本文などで使用する「改行」は、「%0D%0A」という文字コード表示に置き換えます。図1 のように改行されたデータをそのまま新規メール作成ウィンドウに表示する場合、「Dim strBody As String」「strBody = textBox1.Text」を下記のコードに変更します。

Dim txtLines() As String
Dim n As Integer

txtLines = TextBox1.Lines
For n = 0 To txtLines.GetUpperBound(0)
strBody = strBody & txtLines(n) & "%0D%0A"
Next

リスト2

リスト2 を実装し、図1の[メーラーの起動]ボタンをクリックすると、図3 のように表示されます。

 Cc440860.DefaultMail_fig03(ja-jp,MSDN.10).jpg
 図3