从本地文件系统恢复电子邮件到 ews 中的交换帐户 api

Restore emails from local file system to exchange account in ews api

我正在尝试将电子邮件从本地文件系统恢复到 java 中的任何交换帐户,我已经尝试使用 EWS(Exchange api)copyItems(ItemId itemId, Destination folderId)moveItems(ItemId itemId, Destination folderId) 方法,但是它抛出异常 "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());
}

提前致谢!!

在这种情况下无法使用 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);

干杯 格伦