将电子邮件从本地文件系统还原到ews api中的交换帐户

时间:2015-11-06 13:36:50

标签: java api exchangewebservices

我正在尝试将电子邮件从本地文件系统还原到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());
}

提前致谢!!

1 个答案:

答案 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);

干杯 格伦