diff --git a/src/java/davmail/exchange/ews/EWSMethod.java b/src/java/davmail/exchange/ews/EWSMethod.java index 43b59d53..f28a0e76 100644 --- a/src/java/davmail/exchange/ews/EWSMethod.java +++ b/src/java/davmail/exchange/ews/EWSMethod.java @@ -704,6 +704,8 @@ public abstract class EWSMethod extends PostMethod { public int getStatusCode() { if ("ErrorAccessDenied".equals(errorDetail)) { return HttpStatus.SC_FORBIDDEN; + } else if ("ErrorItemNotFound".equals(errorDetail)) { + return HttpStatus.SC_NOT_FOUND; } else { return super.getStatusCode(); } diff --git a/src/java/davmail/exchange/ews/EwsExchangeSession.java b/src/java/davmail/exchange/ews/EwsExchangeSession.java index 7e9293af..d9c87263 100644 --- a/src/java/davmail/exchange/ews/EwsExchangeSession.java +++ b/src/java/davmail/exchange/ews/EwsExchangeSession.java @@ -540,6 +540,9 @@ public class EwsExchangeSession extends ExchangeSession { } catch (EWSException e) { LOGGER.warn("GetItem with MimeContent failed: " + e.getMessage()); } + if (getItemMethod.getStatusCode() == HttpStatus.SC_NOT_FOUND) { + throw new HttpNotFoundException("Item "+itemId+" not found"); + } if (mimeContent == null) { LOGGER.warn("MimeContent not available, trying to rebuild from properties"); try { diff --git a/src/java/davmail/imap/ImapConnection.java b/src/java/davmail/imap/ImapConnection.java index a06146c3..f0417fbd 100644 --- a/src/java/davmail/imap/ImapConnection.java +++ b/src/java/davmail/imap/ImapConnection.java @@ -299,6 +299,8 @@ public class ImapConnection extends AbstractConnection { ExchangeSession.Message message = uidRangeIterator.next(); try { handleFetch(message, uidRangeIterator.currentIndex, parameters); + } catch (HttpNotFoundException e) { + LOGGER.warn("Ignore missing message "+uidRangeIterator.currentIndex); } catch (SocketException e) { // client closed connection throw e; @@ -383,6 +385,8 @@ public class ImapConnection extends AbstractConnection { ExchangeSession.Message message = rangeIterator.next(); try { handleFetch(message, rangeIterator.currentIndex, parameters); + } catch (HttpNotFoundException e) { + LOGGER.warn("Ignore missing message "+rangeIterator.currentIndex); } catch (SocketException e) { // client closed connection, rethrow exception throw e;