5

Exchange 2003 サーバーでホストされている特定の電子メール アカウントにアクセスし、見つかった未読の電子メールに対して何らかの処理を行うアプリケーションを作成しています。私は MAPI がどのように機能するかについてあまりよく知りません。私は(残念ながら)C#を使用しています。これが引き起こす可能性のある問題について読みました(そして、その影響を恐れていますが、上司はこのようにしたいと思っています..)。

特定のアカウントに接続する方法に関する適切な情報を見つけるのに苦労しています! アプリケーションは誰かのラップトップ (私のものとしましょう) から実行されるため、Outlook を開いたときに接続する既定のアカウントが存在します。そう:

  • ユーザーが既に自分のアカウントを持っていて、おそらく Outlook を開いているマシンから別のアカウントに接続することは可能ですか?

  • もし可能ならば。どうすればいいですか?Outlook 相互運用オブジェクトを開始すると、アプリケーションは自動的にユーザー アカウントを取得し、現在のユーザーをそのアカウントに設定します。Logon()メソッドがこれをソートすることを望んでいましたが、違います。実行するだけでも Outlook.Application olApp = new Outlook.Application(); 、現在のユーザーを標準アカウントに設定します。

私が意味を成していることを願っています (おそらくそうではありません) が、コメントでより詳細な質問をしてください。できるだけ早く返信します. 私が言ったように、私は MAPI と Exchange についてほとんど知らないので、質問の言い回しに苦労しています。

4

3 に答える 3

5

Exchange 2003の特定の電子メールアカウントに接続する場合は、 WebDAVCDOEX、またはExOLEDBを使用する必要があります。Exchange 2007以降を使用している場合は、EWSを使用できます。

Outlook Interopでは、インタラクティブデスクトップアカウント(現在ログインしているユーザー)としてのみ接続できます。他のアカウントに接続する唯一の方法は、現在のインタラクティブアカウントが共有メールボックスを追加した場合です。

于 2012-07-19T13:58:31.807 に答える
1

そのためにRedemptionを使用することもできます。問題のメールボックスにアクセスできるドメイン ユーザーとしてコードを実行し、RDOSessionを呼び出します。そのユーザーに対して、 RDOSessionLogonExchangeMailboxを使用して他のユーザーのメールボックスを開きます。/ .GetSharedMailboxGetSharedDefaultFolder

Exchange 2013 では古いスタイルの RPC 接続 (RPC-over-HTTP または MAPI-over-HTTP のみ) が許可されなくなったRDOSession.LogonHostedExchangeMailboxため、(Exchange 2013 と Exchange 2010 の両方で機能します) を使用できます。

于 2012-07-19T20:20:22.387 に答える
1

1 台のマシンに 2 つのアカウントが定義されている場合は、次を使用できます

Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.GetNamespace("MAPI");

// optional
//object missing = Type.Missing;
//ns.Logon(missing, missing, true, false);

// additional email address 
string recipientName = "myEmail@myDomain";

Outlook.Recipient recip = ns.CreateRecipient(recipientName);
recip.Resolve();

if (recip.Resolved)
{
Outlook.MAPIFolder inboxFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox);
}
于 2015-08-30T07:29:48.440 に答える