应用程序随机无法标记电子邮件' read'与IMAP,Javamail,Exchange 2010

时间:2015-09-01 16:47:45

标签: javamail imap exchange-server-2010

我使用Javamail执行MessageCountListener来读取Exchange 2010服务器上的传入电子邮件,使用IMAP通过SSL连接。

我们目前正在测试该应用。

大多数时候,该应用处理传入的电子邮件并提取其附件文件,然后将电子邮件标记为“阅读”

try {
    email.setFlag(Flag.ANSWERED, true);
    email.setFlag(Flag.SEEN, true);
} catch (final MessagingException e) {
    log.warn("Can't set msg to read - fail transaction...", ex);
    // etc
}

但在某些日子里,这并不奏效。我可以在Outlook收件箱文件夹中看到大约30%的电子邮件未被删除'。然而,没有异常记录,并且应用程序在其他方面完美运行,所以看起来似乎。

这当然会导致问题,因为应用会在重新启动时重新处理电子邮件及其文件附件,因为它会将其视为未读。

这只在我们的测试服务器上,我还没有能够在我的本地开发盒上重现它。

有人可以建议如何解决这个问题,或者说他们是否也看过这个问题?

我的MessageCountListener实施:

@Override
public void messagesAdded(final MessageCountEvent event) {
    Message[] newEmails = event.getMessages();
    if (newEmails != null) {
        log.debug(String.format("%d message(s) added", newEmails.length));
        for (Message email : newEmails) {
            Folder folder = email.getFolder();
            Store store = folder.getStore();
            statusOK = processor.runTransaction(email);
            if (statusOK) {
                messageCount++;
            } else {
                log.trace("shutting down listener due to error");
                store.removeConnectionListener((ConnectionListener) this);
                break;
            }
        }
    } else {
        log.debug("Added null new emails array");
    }
}

0 个答案:

没有答案