Java EWS:从Outlook Exchange Server删除延迟发送电子邮件

时间:2019-02-01 17:49:40

标签: java email exchangewebservices

我有一个要求,即用户需要能够提前几天甚至几个月提前设置延迟发送电子邮件,但是电子邮件内容中的某些信息可能会随着数据的变化而随时间变化,因此需要能够删除电子邮件从Exchange Server并根据新内容创建/设置新电子邮件。

设置延迟发送电子邮件非常简单且有效:

if (extendedProperties.getDelaySend()) {
    Date sendDate =  extendedProperties.getDeferredSendTime();
    if (sendDate != null) {
        ExtendedPropertyDefinition PR_DEFERRED_SEND_TIME = new ExtendedPropertyDefinition(16367,
                MapiPropertyType.SystemTime);

        msg.setExtendedProperty(PR_DEFERRED_SEND_TIME, sendDate);
    }
}

发送邮件:

msg.save(WellKnownFolderName.SentItems);
//msg.send();
msg.sendAndSaveCopy();

我正尝试按以下方式删除电子邮件:

ItemView view = new ItemView(3);
SearchFilter sf = new SearchFilter.IsEqualTo(epd,"isiId");
FindItemsResults<Item> fir = service.findItems(WellKnownFolderName.SentItems, sf, view);
for (Item itm : fir.getItems()){
    _logNode.info("SendEmailMessageHelper.deleteEmailByUniqueId: Found Email ItemId: "+itm.getId());
    _logNode.info("SendEmailMessageHelper.deleteEmailByUniqueId: Found Email Subject: "+itm.getSubject());
    //ExtendedPropertyDefinition PR_DEFERRED_SEND_TIME = new ExtendedPropertyDefinition(16367,
    //        MapiPropertyType.SystemTime);

    //itm.removeExtendedProperty(PR_DEFERRED_SEND_TIME);
    itm.delete(DeleteMode.MoveToDeletedItems);
}

问题与我使用哪种DeleteMode无关,我都从Exchange收到错误消息:对象无法删除。

当尝试从Outlook Web App手动删除消息时,我收到相同/相似的消息:某些项无法删除。它们已被移动或已被删除,或者访问被拒绝。 Exchange管理员向我保证,用户可以完全控制邮箱。

任何帮助将不胜感激。

参考: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/fc748985-b9e9-41d8-b426-46f9e677cd41/e2007ewscwindows-cannot-delete-delayed-delivery-emails?forum=exchangesvrdevelopment

以上问题是从2015年开始的,没有明显的解决方法。

0 个答案:

没有答案