如何使用MAPI打开交换邮件存储而无需其他对话框

时间:2011-09-20 06:49:04

标签: c# exchange-server mapi

我使用MAPI32.dll来访问用户邮件。目前我正在做以下

   MAPI.LogonEx(IntPtr.Zero, profileName, null, MAPI.FLAGS.Extended | MAPI.FLAGS.NewSession | MAPI.FLAGS.AllowOthers | MAPI.FLAGS.NoMail, out mapiSession);
    ...
   mapiSession.OpenMsgStore(IntPtr.Zero, ENTRYID.Create(rows[0, 0]), Guid.Empty, IMAPISession.FLAGS.BestAccess | IMAPISession.FLAGS.MdbOnline | IMAPISession.FLAGS.MdbTemporary | IMAPISession.FLAGS.MdbNoMail, out mdb);

我使用IMAPISession.FLAGS.MdbOnline直接从Outlook服务器获取邮件。这成功地将我连接到用户收件箱,然后我可以循环。但是此代码会导致对话框输入用户凭据。任何人都可以建议任何“安静”的方式获取没有对话框的消息

对任何建议都很高兴。

2 个答案:

答案 0 :(得分:0)

您应该在连接到messagestore期间指定凭据。这将使mapi图层继续而无需重新询问它们。

答案 1 :(得分:0)

Exchange提供程序始终使用当前用户的标识(父进程),但它也使用凭据高速缓存。您应该能够在打开商店之前使用CredWrite()缓存凭据。