2011-09-20 65 views
0

我使用MAPI32.dll來訪問用戶郵件。目前,我做了以下如何在不使用其他對話框的情況下使用MAPI打開交換消息存儲

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服務器獲取消息。這成功地將我連接到用戶收件箱,然後我可以循環。但是這段代碼會導致對話框輸入用戶憑據。任何人都可以建議任何「安靜」的方式獲取消息沒有對話框

會很樂意提供任何建議。

回答

0

您應該在連接到消息存儲期間指定憑證。這將使mapi圖層繼續而不會重新請求它們。

+0

我該怎麼做? LogonEx方法中的profilePassword參數在所有Win32平臺上都被忽略。 – alert

0

Exchange提供程序始終使用當前用戶的身份(父進程方式),但它也使用憑證緩存。在打開商店之前,您應該能夠使用CredWrite()緩存憑證。

相關問題