Navigation:
Weblog /
その他 / VB.NETでMicrosoft Outlookのメールを読む
VB.NETでMicrosoft Outlookのメールを読む
- はじめに
- VB.NETの環境は、Microsoft Visual Basic 2005 Express Editionを利用しています。
- Microsoft OutlookではないOutlookには、対応していません。
- 準備
- 新しいプロジェクトを作成してください。
- 次に、APIの読み込みを行います。「メニューバーのプロジェクト > 参照の追加」より、COMタブを選択し、「Microsoft Outlook 9.0 Library」コンポーネントを選択します。数値の部分は、インストールしてあるMicrosoft Officeのバージョンで変化することがあります。ちなみに、Microsoft Office2000では9.0です。
- 受信トレイのメールを読む
- まずは、受信トレイのメールを読んでみたいと思います。
- 受信したメールタイトルを表示するためのリストボックス(ListBox1)を用意します。
- 受信トレイのメールを読むタイミングは、起動時に行います。つまり、Form1_Loadに記述します。
-
Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load
Dim myOlApp As Outlook.Application = CreateObject("Outlook.Application")
Dim myNameSpace = myOlApp.GetNamespace("MAPI")
Dim myFolder = myNameSpace.GetDefaultFolder(6)
Dim i As Integer
For i = 1 To myFolder.Items.Count
Dim myitem = myFolder.Items(i)
ListBox1.Items.Add(myitem.Subject)
Next
myFolder = Nothing
myNameSpace = Nothing
myOlApp = Nothing
End Sub
- myNameSpace.GetDefaultFolder(6)の6が受信トレイのフォルダを指します。
- フォルダにある各メールは番号で管理されており、Itemsのインデックス番号で参照できます。
- Microsoft Outlookの受信トレイにメールがあるのを確認してから、実行してください。

- 問題なく表示できたでしょうか?
- メールの本文を読む前に
- 次は、メールのタイトルを読むことができたので、リストを選択すると内容が表示されるようにします。
- メールの内容を読むためには、そのメールのインデックス番号が必要です。
- そこで、メールタイトルをキーに、メール番号を値としたハッシュを用意します。
-
Public mail As Hashtable = New Hashtable
Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load
Dim myOlApp As Outlook.Application = CreateObject("Outlook.Application")
Dim myNameSpace = myOlApp.GetNamespace("MAPI")
Dim myFolder = myNameSpace.GetDefaultFolder(6)
Dim i As Integer
For i = 1 To myFolder.Items.Count
Dim myitem = myFolder.Items(i)
ListBox1.Items.Add(myitem.Subject)
mail(myitem.Subject) = i
Next
myFolder = Nothing
myNameSpace = Nothing
myOlApp = Nothing
End Sub
- 変更した場所を赤く表示しています。これで、リストの値からメール番号を得られるようになりました。
- メールの本文を読む
- 内容を表示するためのテキストボックス(TextBox1)を用意します。
- TextBox1はプロパティの設定で、MultilineとScrollBarsをTrueに変更しておきます。
- 内容を表示するには、ListBox1のSelectedIndexChangedイベントを利用します。
-
Private Sub ListBox1_SelectedIndexChanged( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles ListBox1.SelectedIndexChanged
Dim myOlApp As Outlook.Application = CreateObject("Outlook.Application")
Dim myNameSpace = myOlApp.GetNamespace("MAPI")
Dim myFolder = myNameSpace.GetDefaultFolder(6)
Dim myitem = myFolder.Items(mail(ListBox1.Text))
TextBox1.Text = myitem.Body
End Sub
- メール番号は1から始まります。

- これで、選択したメールの内容を表示することができました。
- メールの内容は、text形式かhtml形式かの判断は行っていません。
- html形式では、ソースが表示されますが、一部は「?」という文字に化けます。
- おまけ
- myitem.Subject 件名
- myitem.SenderName 送信者名
- myitem.SentOnBehalfOfName 送信者名(SenderNameとどう違う?)
- myitem.Body 内容
- myitem.ReceivedTime 受信時間
- myitem.To 送信先
更新履歴
- 2007-07-21
- 公開
このページに属しているページツリー
Recent Comments