2014-10-02 2 views
0

EWS Java API 1.2를 사용하고 있는데이 코드를 사용하여 ItemAttachment를 저장하는 데 문제가 있습니다.ItemAttachment를 저장하는 중

if(attachmentsCol.getPropertyAtIndex(i) instanceof FileAttachment) 
{ 
    ... 
} 
else 
{ 
    ItemAttachment attachment = (ItemAttachment)attachmentsCol.getPropertyAtIndex(i);           
    attachment.load(); 
    Item item = attachment.getItem(); 
    item.load(newPropertySet(ItemSchema.MimeContent));` 
    MimeContent Itemmc = item.getMimeContent(); 
    .... 
} 

item.load(....) 반환이 오류

microsoft.exchange.webservices.data.InvalidOperationException :이 서비스 객체가 ID를 가지고 있지 않기 때문에이 작업을 수행 할 수 없습니다.

감사합니다.

답변

0

첨부 파일에 유효하지 않은 GetItem 요청을 시도하기 때문에 ItemAttachment 자체에서로드를 수행 할 수 없습니다. 당신이해야 할 것은

   foreach (var item in findResults.Items) 
       { 
        foreach (Attachment Attach in item.Attachments) { 
         if (Attach is ItemAttachment) { 
          PropertySet psProp = new PropertySet(BasePropertySet.FirstClassProperties); 
          psProp.Add(ItemSchema.MimeContent); 
          ((ItemAttachment)Attach).Load(psProp); 
          if (((ItemAttachment)Attach).Item.MimeContent != null) 
          { 
           System.IO.File.WriteAllBytes("c:\\temp\\file.eml", ((ItemAttachment)Attach).Item.MimeContent.Content); 
          }        
         } 
        }      

건배 같은 마임 내용, 예를 들면 뭔가 글렌

+0

이 ... '((답장을 보내 주셔서 감사 ItemAttachment와 propertyset을 포함()는 Attachment.load에) 첨부) .load (새 PropertySet (ItemSchema.MimeContent)); 는'java.lang.ClassCastException가' 반환 : microsoft.exchange.webservices.data.PropertySet이 microsoft.exchange.webservices.data.PropertyDefinitionBase 캐스트 할 수없는 ' 자바 API가 차이를 보이는 것 같습니다. C#보다 nt. –

+0

EWS Java에서 알려진 버그 일 가능성이 있습니다. 다행스럽게도 EWS Java는 최근 오픈 소스이며 Github에서 사용할 수 있습니다. https://github.com/OfficeDev/ews-java-api ExchangeService.internalGetAttachments()에서 특정 버그가 발생하고 문제점 섹션. 코드에서 모든 컴파일러 경고를 통해 알게되면 알 수 있습니다. 곧 수정판에 수정판이 있어야하지만, 한번 살펴 본다면 스스로 해결하기가 어렵지 않습니다. – user1017413

+0

두 가지 조언 주셔서 감사합니다. 내 문제가 해결 됐어. –