2

EWS Managed API의 스트리밍 알림을 사용하여 여러 Exchange 2010 사서함을 구독하는 프로그램이 있습니다.EWS가있는 특정 항목이나 폴더가있는 사서함을 어떻게 결정합니까?

항목과 관련된 알림을 받으면 항목이 속한 사서함을 결정해야합니다. 항목의 ID와 상위 폴더의 ID 등을 가져올 수 있지만 항목이 속한 사서함을 확인하는 방법이 표시되지 않습니다.

+0

ItemId를 어떻게 가져 왔는지 알려주십시오. 나는 그걸로 고민하고있다 –

답변

3

좋아요, 그렇다면 응용 프로그램을 올바르게 이해하면 가장을 사용하고 가장 된 모든 사용자에 대해 구독을 만들 수 있습니다. 구독에서 이벤트를 받으면이 이벤트가 발생한 사용자를 알고 싶습니다. 그렇다면 구독이 생성 된 사용자에게 매핑 된 상태를 유지할 수 없습니까? 단순 Dictionary<StreamingSubscription, ImpersonateduserId>이면 충분합니다. 알림을 받으면 NotificationEventArgs.Subscription 속성에서 구독 개체를 가져오고 구독이 생성 된 사용자 ID를 찾습니다. ImpersonatedUserId에서 smtp 주소 (속성 Id)를 얻을 수 있으며 어떤 exatcly 사용자인지 알 수 있습니다.

+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; 
} 

이렇게하면 해당 항목이 속한 사서함의 이메일 주소를 가져올 수 있습니다.