OutlookExpressをプログラムから扱うメモ2

昨日までで、アカウント情報のインスタンスと、GetPropの時のプロパティID(DWORD)は分かったけど、取得時にエラーが出る原因はいまいち分からない。ということで原因究明と実データの取得をしてみたい今日この頃。うまくいけばもっと自動化してみたいな、と。

いろいろ試してみてたけど、昨日からの検証で取得してたプロパティID(DWORD)が正しくなかった模様。ループで回してHRESULT=S_OKな物を取得したんだけど、何かが違ったらしい。で、ショッキングなことに、VBから使えるMSOE操作のソースみたいなのを発見。(ここ:http://files.codes-sources.com/fichier.aspx?id=33575&f=CWMailAccounts.clsGoogle先生で、IImnAccountの一単語だけで検索すると出てきた。でもVS.Net2003にソースコピーすると一筋縄じゃ使えないなぁ。
とりあえず、この中でプロパティのIDを計算してるところを自前で計算して、VC++でやってみると、確かに設定データが取得できた。だけど、何でループの時に出てこなかったんだろう。はぁ。まあ、OEを自動化するための情報収集ができたからよしとするか・・・

というわけで、プロパティID(DWORD)の一覧

305464304 サーバ名(アカウントの名前?)
305988592 アカウントID

312280041 IMAPポート番号
312411113 IMAPタイムアウト時間
312345589 IMAPセキュア接続を使うかどうか(IMAPS)
311952368 IMAPサーバ名
312017904 IMAPユーザID
312083446 IMAPパスワード

331613168 POP3サーバ名
331678704 POP3ユーザID
331744246 POP3パスワード
331940841 POP3ポート番号
332006389 POP3セキュア接続を使うかどうか(POP3S)
332071913 POP3タイムアウト時間
332137461 メールをサーバに残すかどうか
332202997 RemoveWhenDeleted(だけどよく分からないし、設定情報取れなかった)
332268533 RemoveWhenExpired(同上)

338166768 SMTPサーバ名
338232310 SMTPユーザID(受信と同じ設定を使う、だと取れないかも)
338297846 SMTPパスワード(同上)
338494441 SMTPポート番号
338559989 SMTPセキュア接続を使うかどうか(SMTPS)
338625513 SMTPタイムアウト時間
338691056 メール送信時に表示する送信者名
338822128 メール送信時に表示するメールアドレス

プロパティ取得関数の使い方

HRESULT = pAccount->GetProp((DWORD)<プロパティID>, (BYTE)pByte, (ULONG)pLength);
HRESULT = pAccount->GetPropSz((DWORD)<プロパティID>, (DWORD)pDword);
HRESULT = pAccount->GetPropDw((DWORD)<プロパティID>, (LPSTR)pChar, (ULONG)pCharLength);
※pCharLengthには、元々確保したpCharの配列長を与える