0

MailItem (활성 탐색기에서 선택한 항목)에 대한 Exchange Server ItemID를 결정할 수 있습니까? 내가 작업하고있는 솔루션에는 Outlook AddIn 구성 요소와 EWS를 통해 메일 항목에 액세스하는 다른 구성 요소가 있습니다. 나는 이메일의 특정 속성에 액세스 할 수 있습니다 이런 식으로C# Outlook AddIn - 선택한 전자 메일의 EWS 항목 ID 확인

Outlook.Explorer ActiveExplorer = Globals.ThisAddIn.Application.ActiveExplorer(); 
object selectedItem = ActiveExplorer.Selection[1]; 
Outlook.MailItem selectedEmail = selectedItem as Outlook.MailItem; 

하지만 속성 값은 전체 솔루션의 작동에 중요하다

내 아웃룩 추가 기능에 다음과 유사한 코드를 가지고 EWS에서 반환 한 것과 정확히 동일합니다. 예를 들어 속성에서 시간이 반환되면 시간이 밀리 초까지 일치해야합니다.

ItemID를 가지고 있고 아래와 같이 항목을 사용하여 (addin 내에서) Item을 사용하여 작업 할 수 있습니다.

Item myItem = Item.Bind(MyExchangeService, MyItemID); 
내가 MailItem.EntryID 결합을 시도 변덕에

하지만 잘못된 ID 오류 (나를 놀라게하지 않았다) 얻었다. MailItem.PropertyAccessor.GetProperty를 통해 Exchange ID를 사용할 수 있는지 확인하려고 시도했지만이 방법으로 속성에 액세스하는 데 익숙하지 않아 지금까지 행운을 얻지 못했습니다.

생각하십니까?

답변

1

정확하게 내 질문에 대답하지 않았지만 내 포커스를 EWS ID를 찾는 대신 EntryID를 EWS ID로 변환하는 다음 스택 오버플로 게시물을 발견했습니다.

Exchange ItemID differs from GlobalAppointmentID for Outlook AddIn

이 새로운 각도로 내가 직접 내 문제를 해결 다음 사이트를 찾을 수 있었다.

https://bernhardelbl.wordpress.com/2013/04/15/converting-entryid-to-ewsid-using-exchange-web-services-ews/

나는 링크가 깨진 경우 전액 여기에 코드를 가져옵니다 게시했다.

string ConvertHexEntryIdToEwsId(ExchangeService esb, string sID, string strSMTPAdd) 
{ 
    AlternateId objAltID = new AlternateId(); 
    objAltID.Format = IdFormat.HexEntryId; 
    objAltID.Mailbox = strSMTPAdd; 
    objAltID.UniqueId = sID; 

    AlternateIdBase objAltIDBase = esb.ConvertId(objAltID, IdFormat.EwsId); 
    AlternateId objAltIDResp = (AlternateId)objAltIDBase; 
    return objAltIDResp.UniqueId; 
}