VisualBasic(Outlookマクロ:MailItemのプロパティ)

■メールの情報について調べてみる。
マクロでメールを操作したいので、今回、メールが持つ情報について調べてみる。
オブジェクトMailItemの中にメールが持つプロパティ情報が入っているらしい。
まず、下のようなサンプルメールを作成して、パソコンに送付した。

送信元:(携帯アドレス)
タイトル:macrotest
本文:test2

パソコンでメール受信すると最新のメールに入っているので、そのメールを取り出すような下のコードを組んだ。

Sub Sample()
 Dim myItem As Object
 Dim myFolder As Folder
 Dim foldersize As Integer
 Dim index As Integer
 Dim str As String
 Dim str2 As String

 Set myNameSpace = Application.GetNamespace("MAPI")
 Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
 foldersize = myFolder.Items.Count
 Set myItem = myFolder.Items(foldersize)
 
 MsgBox myItem.ReceivedTime & vbCrLf & myItem.ItemProperties.Count & vbCrLf & myItem.Body

 index = 0

 For Each property In myItem.ItemProperties
  
  If index <= 50 Then
     str = str & index & ":  " & property.Name & "   "
  ElseIf index > 50 Then
     str2 = str2 & index & ":  " & property.Name & "   "
  End If
  index = index + 1
 Next
 
 MsgBox str
 MsgBox str2
 MsgBox myItem.ItemProperties.Item(78)
 
End Sub

ここで、Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)で受信トレイのフォルダを取得できるよう。その後の foldersize = myFolder.Items.Count で得られた数値が受信トレイのアイテム数と一致した。
Set myItem = myFolder.Items(foldersize) でフォルダ内の最も大きい数値を指定すると最新のメールがmyItemとして取得できたよう。
myItemは、MailItemのオブジェクトとなっているはず。

WebでそのAPIを調べると、ReceivedTimeやBodyといったプロパティがあった。名前からして受信時間や内容だと思う。他に、ItemPropertiesというプロパティもあった。これには90の要素があるよう。
上のコードの始めのメッセージボックス(MsgBox)表示が下のもの。
メールの中身と受信時間が表示されている。

ItemPropertiesにはプロパティ名のデータが含まれていたので、それぞれのプロパティ名を文字列にして、つなげて表示してみた。メッセージボックスの制限か長い文字列は切れてしまったので、strとstr2に分けて表示。

名前から当たりを付けて個々の要素を表示していくと内容やタイトルなどが含まれていた。
例えば、
7 Body: 内容
61 To: 送信先
78 TaskSubject: タイトル
85 Sender: 送信元
などなど。

必要に応じて他のものも見ていくつもり。