4

我正在尝试使用一个小程序从 Exchange 服务器发送电子邮件并保存所有附件。根据建议,我决定使用 Redemption 库。

我已经在服务器上安装了Microsoft Exchange Server MAPI 客户端和协作数据对象 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 回答