Outlook からメールヘッダの情報を収集する(1)
社内でどんなメールソフトウェアが使われているかの調査を実施する必要が出てきた。
そのために、流通しているソフトウェアのメールヘッダから X-Mailer のパターンを抜き出して、それをもとに分析することにした。
X-Mailer は任意に指定されるヘッダ値で明確なルールがあるわけではないので、あくまで参考データではあるが、ほかに参考になる情報がないのだからしょうがない。
古い Eudora Pro のように、mbx という拡張子の実質テキスト形式のメールボックスファイルであれば grep や awk で処理すれば楽だった。
しかし、現在メインで使っているのは Outlook。ここから情報を抜き出すのは意外とたいへん。
もともとOutlookについているエクスポートの機能では、限られた項目しかエクスポートできないので、仕方なくプログラムで抜き出してやろうと思った。
Outlook VBA というのがあって、これを使うと、自由に Outlook 内のデータにアクセスして処理できるようだ。
しかし、私はオブジェクトとかクラスとか苦手で、よくわからない。
サンプルを探すことになる。
まず、このサイトを参考にして、Outlook から EXCEL にデータを抜き出す方法を試す。
http://peiyorin.cocolog-nifty.com/blog/2007/03/outlook_vbaoutl_02ed.html
さらに、この VBAに Outlook ヘルプの「PropertyAccessor.GetProperty メソッド」の記述を参考にして、取得項目を追加して、メールヘッダを抜き出してみる。
'PropertyAccessor クラスのインスタンスを取得します。 PropName = "http://schemas.microsoft.com/mapi/proptag/0x007D001E" Set oPA = oMail.PropertyAccessor 'GetProperty を呼び出します。 Header = oPA.GetProperty(PropName)
いったいこれが何をしているのかさっぱりだが、とりあえずこれで EXCEL のセルに、メールヘッダがごっそり取り込まれるようになった。
しかし、メールヘッダのほとんどはいらない。
X-Mailer の項目だけ抜き出せたらいいのだ。
上記 Header 内の文字列の処理になるわけだ。さて、どうしたらよいだろう。