diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index 8de659bd..2ee71f68 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -928,11 +928,13 @@ public class ExchangeSession { } protected void writeAttachment(OutputStream os, MimeHeader mimeHeader, Attachment attachment) throws IOException { - OutputStream quotedOs = null; try { + // quotedOs must not be closed : this would close the underlying outputstream + OutputStream quotedOs; try { // try another base64Encoder implementation if ("base64".equalsIgnoreCase(mimeHeader.contentTransferEncoding)) { + //noinspection IOResourceOpenedButNotSafelyClosed quotedOs = new BASE64EncoderStream(os); } else { quotedOs = (MimeUtility.encode(os, mimeHeader.contentTransferEncoding)); @@ -989,7 +991,6 @@ public class ExchangeSession { } } } - bis.close(); quotedOs.flush(); os.write('\r'); os.write('\n'); @@ -997,14 +998,6 @@ public class ExchangeSession { } catch (HttpException e) { throw new IOException(e + " " + e.getMessage()); - } finally { - if (quotedOs != null) { - try { - quotedOs.close(); - } catch (IOException e) { - // ignore - } - } } } diff --git a/src/test/davmail/exchange/TestExchangeSession.java b/src/test/davmail/exchange/TestExchangeSession.java index ed1b0506..626bc47e 100644 --- a/src/test/davmail/exchange/TestExchangeSession.java +++ b/src/test/davmail/exchange/TestExchangeSession.java @@ -14,7 +14,7 @@ public class TestExchangeSession { ExchangeSession session = new ExchangeSession(); // test auth try { - session.checkConfig(); + ExchangeSession.checkConfig(); session.login(argv[1], argv[2]); ExchangeSession.Folder folder = session.selectFolder(argv[3]);