2

我有一個程序使用EWS託管API的流式通知訂閱多個Exchange 2010郵箱。如何確定包含EWS的給定項目或文件夾的郵箱?

當我收到與某個項目有關的通知時,需要確定該項目屬於哪個郵箱。我能夠獲得該項目的ID和父文件夾的ID等,但我沒有看到任何方式來確定該項目屬於哪個郵箱。

+0

您能否請您分享您檢索ItemId的方式。我正在努力與 –

回答

3

好的,如果我正確理解您的應用程序,您正在使用模擬併爲所有模擬用戶創建訂閱。並且,當您收到來自訂閱的事件時,您想知道該事件是由哪個用戶發生的。如果是這種情況,您不能只保留您的訂閱映射到訂閱創建的用戶嗎? 簡單Dictionary<StreamingSubscription, ImpersonateduserId>就足夠了 而且當您收到通知時,您會從NotificationEventArgs.Subscription屬性獲得訂閱對象,並查找在您的地圖中創建了訂閱的用戶標識。從ImpersonatedUserId你可以得到smtp地址(屬性Id),你知道那是一個精明的用戶。

+0

我希望有一個答案,可以讓我只通過一個ItemID找到一個郵箱,但這將工作。謝謝。 – Tedderz

+0

據我所知,沒有辦法用ItemId來確定郵箱。對於更復雜的配置,例如可以在集羣中擁有多臺服務器,並且如果EWS服務配置正確,則可以訪問(模擬)所有用戶的連接,而僅連接到其中的一臺。所以只需使用ItemId來查找項目可能太耗費時間和資源,甚至可能無法實現。 – grapkulec

+0

今天我遇到了這個問題,這讓我朝着正確的方向前進。但是,你可以通過你的「僞代碼」例子來了解更多細節嗎?因爲說實話,我不知道在哪裏放置該詞典,以及我將如何檢索該對象。所以更多的細節是非常感謝:) – Jelmer

0
private void OnNotificationEvent(object sender, NotificationEventArgs args) 
{ 
string fromEmailAddress = args.Subscription.Service.ImpersonatedUserId.Id; 
} 

這就是您如何獲取該物品所屬的郵箱的電子郵件地址。

相關問題