Use try-with-resources
diff --git a/src/main/java/org/apache/commons/mail/Email.java b/src/main/java/org/apache/commons/mail/Email.java
index ece572b..8b50466 100644
--- a/src/main/java/org/apache/commons/mail/Email.java
+++ b/src/main/java/org/apache/commons/mail/Email.java
@@ -1432,6 +1432,7 @@
 
             if (this.popBeforeSmtp)
             {
+                // TODO Why is this not a Store leak? When to close?
                 final Store store = session.getStore("pop3");
                 store.connect(this.popHost, this.popUsername, this.popPassword);
             }
diff --git a/src/main/java/org/apache/commons/mail/MultiPartEmail.java b/src/main/java/org/apache/commons/mail/MultiPartEmail.java
index 15358f7..9a22e99 100644
--- a/src/main/java/org/apache/commons/mail/MultiPartEmail.java
+++ b/src/main/java/org/apache/commons/mail/MultiPartEmail.java
@@ -386,8 +386,7 @@
         // verify that the URL is valid
        try
        {
-           final InputStream is = url.openStream();
-           is.close();
+           url.openStream().close();
        }
        catch (final IOException e)
        {
@@ -414,16 +413,13 @@
         final String description)
         throws EmailException
     {
-        // verify that the DataSource is valid
-        try
+        if (ds == null)
         {
-            final InputStream is = ds != null ? ds.getInputStream() : null;
-            if (is != null)
-            {
-                // close the input stream to prevent file locking on windows
-                is.close();
-            }
-
+            throw new EmailException("Invalid Datasource");
+        }
+        // verify that the DataSource is valid
+        try (InputStream is = ds.getInputStream())
+        {
             if (is == null)
             {
                 throw new EmailException("Invalid Datasource");
@@ -433,7 +429,6 @@
         {
             throw new EmailException("Invalid Datasource", e);
         }
-
         return attach(ds, name, description, EmailAttachment.ATTACHMENT);
     }
 
diff --git a/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java b/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java
index 4c34ef4..8154144 100644
--- a/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java
+++ b/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java
@@ -105,8 +105,6 @@
                     result = ds;
                 }
             }
-
-
             return result;
         }
         catch (final IOException e)
diff --git a/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java b/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java
index 6d0f391..e29269e 100644
--- a/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java
+++ b/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java
@@ -270,10 +270,13 @@
         final DataHandler dataHandler = part.getDataHandler();
         final DataSource dataSource = dataHandler.getDataSource();
         final String contentType = getBaseMimeType(dataSource.getContentType());
-        final byte[] content = this.getContent(dataSource.getInputStream());
+        byte[] content;
+        try (InputStream inputStream = dataSource.getInputStream()) 
+        {
+            content = this.getContent(inputStream);
+        }
         final ByteArrayDataSource result = new ByteArrayDataSource(content, contentType);
         final String dataSourceName = getDataSourceName(part, dataSource);
-
         result.setName(dataSourceName);
         return result;
     }