4

Exchangeサーバーから電子メールを送信し、添付ファイルを保存する小さなプログラムを試しています。提案から、私は償還ライブラリを使用することにしました。

サーバーにMicrosoftExchangeServerMAPIクライアントとCollaborationDataObjects 1.2.1をインストールしたので、Outlookがなくても動作するはずです。ローカルマシンでプログラムを実行すると、問題なく自分の受信トレイを参照できます。しかし、サーバー上で実行しようとすると、問題が発生します。

コードでログイン情報を指定したのに、ログインプロンプトが表示されます。アクセスしようとしているアカウントとは異なるアカウントでサーバーにログインしています。私の最も簡単な試みは次のようなものです。

// Get session
RDOSession session = RedemptionLoader.new_RDOSession();

// Attempt login
session.Credentials.Add("outlook.server.local", 
                        "user", 
                        "password", 
                        rdoCredentialType.ctGeneric,
                        rdoCredentialPersist.cpLocalMachine);

session.LogonExchangeMailboxEx("user",
                               "outlook.server.local",
                               false, 
                               true, 
                               "", 
                               "");

// Access mailbox
RDOFolder folder = session.GetDefaultFolder(rdoDefaultFolders.olFolderInbox);

メールボックスまたはその他のアイテムにアクセスしようとすると、エラーが発生します。

Unhandled Exception: System.Runtime.InteropServices.COMException: 
  Error in IMAPI Session::OpenMsgStore: MAPI_E_LOGON_FAILED
Make sure your code runs under the Windows user identity that has MAPI profiles.

別のユーザーとしてログインしている場合でも、メールボックスにアクセスするにはどうすればよいですか?「実行...」でプログラムを実行し、ユーザーログインを提供すると、サーバーでも機能します。しかし、私はそれがさまざまなユーザーと連携するために必要です。

4

1 に答える 1

3

ユーザーがデフォルトのMAPIプロファイルを持っていることを確認します(Outlookを起動して任意のメールボックスに接続するだけです)。

次に、を使用して「デフォルトプロファイル」にログオンし、をsession.logon使用してメールボックスに接続しますsession.GetSharedMailbox()

于 2012-09-18T08:41:23.317 に答える