質問者
MAPIでOutlook Expressの受信トレイを参照する

質問
-
VB.net で、MAPIでOutlook Expressの受信トレイを参照するプログラムを作成し、一応ちゃんと動いていたのですが、最近Office2003をインストールしたら、Outlook Expressの受信トレイではなく、Outlookの受信トレイを参照するようになってしまいました。
Outlookの方には、メールアカウントの設定をしていないし、Outlook Expressを既定のメールハンドラに設定しなおしても状況が変わりません。試しに、Outlookをアンインストールすると、Outlook Expressの受信トレイを参照するようです。
そもそもサンプルソースを参考にして作っただけで、MAPIの仕組みがよくわからないのですが、Outlookをアンインストールしなくても、Outlook Expressの受信トレイを参照するにはどのようにすればいいのでしょうか?
例えば、セッションのSignOn()の処理で指定する方法とか、Fetch() の時に指定するとか。。
すべての返信
-
回答いただけないので、質問の仕方を変えてみます。
受信トレイを参照する処理は下の通りで、これはほぼMSDNにあったサンプルソースそのままです。
で、質問ですが、この Fetch() によって参照される受信トレイが、Outlook のものと、Outlook Express のものとどちらになるかは、どのように決定されるのでしょうか?私は、Windows の既定のメールハンドラに設定してある方だと思っていたのですが、今回の事でそうではないという事がわかりました。
ただ、人のWin2000のマシンでテストしてみると、Office2003で、Outlook がインストールしてあっても、Outlook Express の方を参照する事もできるようなんですが、レジストリをちょっと見ても何が決定してるのかわからないんです。
でも、私の環境では、Outlook2003 を入れるとダメで外すとOKです。両者のレジストリをエクスポートしてテキストエディタで比較したりしてみたのですが、インストールによって追加される項目が多すぎてまったく絞り込めません。
MAPIで受信トレイを参照する事自体、今ではセキュリティ上推奨されてないのかもしれませんが、別に悪い事をしようというわけではないので、どなたかお助け下さい。With mapiSess
.DownLoadMail = False
.LogonUI = True
.SignOn()
LogOn = True
.NewSession = True
mapiMess.SessionID = .SessionID
End WithWith mapiMess
.FetchUnreadOnly = True
.Fetch()
End With -
わからないなりにいろいろ調べたんですけど、この問題はもしかして、
http://support.microsoft.com/kb/q304116/
に該当する話なんでしょうか。関係ないかな。。
嘘情報を流しましたが、Win2000でもOutlook2003 入れるとダメでした。
Office2002 は問題なかったというのも嘘だったかもしれません。
ごめんなさい。どうすればいいんだろう。。