none
MAPIでOutlook Expressの受信トレイを参照する RRS feed

  • 質問

  • VB.net で、MAPIでOutlook Expressの受信トレイを参照するプログラムを作成し、一応ちゃんと動いていたのですが、最近Office2003をインストールしたら、Outlook Expressの受信トレイではなく、Outlookの受信トレイを参照するようになってしまいました。

    Outlookの方には、メールアカウントの設定をしていないし、Outlook Expressを既定のメールハンドラに設定しなおしても状況が変わりません。試しに、Outlookをアンインストールすると、Outlook Expressの受信トレイを参照するようです。

    そもそもサンプルソースを参考にして作っただけで、MAPIの仕組みがよくわからないのですが、Outlookをアンインストールしなくても、Outlook Expressの受信トレイを参照するにはどのようにすればいいのでしょうか?

    例えば、セッションのSignOn()の処理で指定する方法とか、Fetch() の時に指定するとか。。

     

    2006年3月30日 6:14

すべての返信

  • Office2002の時は問題なかったので、Office2003のOutlookが悪いという気がしてしかたないんですけど。。

     

    2006年3月30日 7:43
  • 回答いただけないので、質問の仕方を変えてみます。

    受信トレイを参照する処理は下の通りで、これはほぼ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 With

        With mapiMess
            .FetchUnreadOnly = True
            .Fetch()
        End With

     

    2006年3月31日 14:51
  • わからないなりにいろいろ調べたんですけど、この問題はもしかして、

    http://support.microsoft.com/kb/q304116/

    に該当する話なんでしょうか。関係ないかな。。

    嘘情報を流しましたが、Win2000でもOutlook2003 入れるとダメでした。
    Office2002 は問題なかったというのも嘘だったかもしれません。
    ごめんなさい。

    どうすればいいんだろう。。

    2006年4月3日 2:12
  • 私もMAPI初心者なので詳しいことはわからないのですが、
    送信するPGは、
    IEのインターネットオプション―プログラム―電子メール
    で選択されてるメールソフトを使うようです。
    *おそらくレジストリに記載され、MAPIはそれを使っているので
       はないでしょうか

    2007年7月13日 2:49