我正在尝试将电子邮件从本地文件系统还原到java中的任何交换帐户,我尝试使用copyItems(ItemId itemId, Destination folderId)
和moveItems(ItemId itemId, Destination folderId)
EWS(Exchange api)
方法,但它会抛出异常,因为&# 34; ErrorInvalidIdMalformed",那么请你帮我解决这个问题..
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 :(得分:2)
使用MoveItem在此实例中不起作用,因为您只能将现有商店项目从一个地方移动到另一个地方。只需在您创建的项目上调用save,然后使用要将其保存到的目标文件夹。例如
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);
干杯 格伦