2015-11-06 49 views
0

我試圖從本地文件系統恢復電子郵件到任何交換帳戶在java中,我已經嘗試使用copyItems(ItemId itemId, Destination folderId)moveItems(ItemId itemId, Destination folderId)方法EWS(Exchange api)但它引發一個異常爲「ErrorInvalidIdMalformed 「,所以你能幫我解決這個問題..從本地文件系統還原電子郵件到ews api交換帳戶

for (Object obj : emlFiles) { 
     File file = (File) obj; 
     InputStream source = null; 
     EmailMessage message = null; 
     source = new FileInputStream(file); 
     MimeMessage msg = new MimeMessage(null, source); 
     message = new EmailMessage(service); 
     // Set properties on the email message. 
     message.ParentId = msg.getMessageID(); 
     ItemId id = (ItemId.getItemIdFromString(message.ParentId)); 
     //service is exchange service object.. 
     service.moveItem(id,destinationFolder.getId()); 
} 

在此先感謝!

+0

你說你想還原電子郵件,但是用什麼方法備份它們以及存儲在文件系統中的文件格式是什麼? –

+0

我已經創建了EmailMessage對象,並將它傳遞給'moveItem()'方法,它在ews api的構建方法中,上面提到的消息是EmailMessage的對象。 – user1837698

回答

1

在這種情況下使用MoveItem不起作用,因爲您只能將現有商店項目從一個地方移動到另一個地方。只需調用您創建的項目上的保存並使用您想要保存的目標文件夾即可。例如

message.save(destinationFolder.getId()); 

您可能還需要設置SentFlag因此,該消息將不會顯示爲草稿例如,見的例子在https://msdn.microsoft.com/en-us/library/office/dn672319(v=exchg.150).aspx

ExtendedPropertyDefinition PR_MESSAGE_FLAGS_msgflag_read = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer); 
    email.SetExtendedProperty(PR_MESSAGE_FLAGS_msgflag_read, 1); 

乾杯 格倫

相關問題