2004-11-19 [長年日記]

Outlookのアドレス帳にアクセス (6)

MAPIのスタブ(mapi32.dll)を経由するからいけないのであって、直接OutlookのMAPIプロバイダのDLL(msmapi32.dll)をロードしてやればできるんじゃないかと思って試してみたらうまくいきました。本当に大丈夫なのか心配だったのですが、MAPI example code for getting folders and messagesを見ても同じ事をやっているので大丈夫なようです。ただし、OutlookのバージョンによってDLLのパスの取り方が微妙に異なるようなのが面倒です。

で、MAPILogonExしてIMAPISessionを取り出してIMAPISession::OpenAddressBookを呼び出してIAddrBookを取ったら後はWABの場合と同じかなと思ったら、やはりこの場合もOOMのAddressListから取り出すのと同様、一つのアドレスが一つのエントリになってしまっていました。WABの場合には、PR_CONTACT_EMAIL_ADDRESSESを指定してプロパティを取り出すと一つのエントリから複数のアドレスを取り出せるのですが、Outlookではそのプロパティは存在しません。このあたりの動作はWABとは違うようです。

というわけでちゃんとエントリを取り出したかったら、IMAPISession::OpenMsgStoreしてIMsgStoreを取り出し、IMsgStore::OpenEntryして連絡先フォルダのIMAPFolderを取り出しフォルダ内のエントリをなめていく必要があるようです。面倒だし(QMAIL的には)見た目は変わらないのでIAddrBook経由でも良いかも。

[Q3] Outlookのアドレス帳の読み込み

というわけで、出来るようにしました。Outlook XPでしか確認していませんので、他のバージョンをお持ちの方は試してみていただけると助かります。

これに伴って外部アドレス帳を取り込むかどうかの指定方法が変わりました。詳細は、<BTS:768>をどうぞ。


トップ «前の日記(2004-11-18) 最新 次の日記(2004-11-20)»