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: 送信元
などなど。
必要に応じて他のものも見ていくつもり。