2014-10-02 59 views
0

我正在使用EWS JAVA API 1.2,並且使用此代碼保存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

您無法對ItemAttachment本身執行加載操作,因爲它會嘗試執行對附件無效的GetItem請求。你需要做的是在Attachment.load()包括與MIME的內容例如像

   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一個屬性集)附件).load(new PropertySet(ItemSchema.MimeContent));' 返回 'java.lang.ClassCastException:microsoft.exchange.webservices.data.PropertySet無法轉換爲microsoft.exchange.webservices.data.PropertyDefinitionBase ' 似乎是JAVA API表現差異nt比C#。 – 2014-10-03 15:29:26

+0

這可能是EWS Java中的一個已知錯誤。幸運的是,EWS的Java最近被開源的,可在Github上: https://github.com/OfficeDev/ews-java-api 在ExchangeService.internalGetAttachments發生特定的錯誤(),在這個問題#12問題部分。當你通過編譯器警告在代碼中看到它時,你就會知道它。修復應儘快在回購中,但如果你看一看,就不難解決。 – user1017413 2014-10-03 21:08:46

+0

謝謝你的建議。它解決了我的問題。 – 2014-10-06 09:44:48