You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/12/25 17:54:38 UTC

(commons-email) 01/03: Split out existing Maven into a multi-module project

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-email.git

commit 5481183476c1b1abf998f82bfbe95fd95db33c96
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Dec 25 11:14:58 2023 -0500

    Split out existing Maven into a multi-module project
    
    Bump to 2.0.0-M1-SNAPSHOT
---
 commons-email-javax/pom.xml                        |  112 +++
 .../src}/conf/spotbugs-exclude-filter.xml          |   10 +-
 .../commons/mail2/javax}/DataSourceResolver.java   |    2 +-
 .../commons/mail2/javax}/DefaultAuthenticator.java |    2 +-
 .../org/apache/commons/mail2/javax}/Email.java     |    4 +-
 .../commons/mail2/javax}/EmailAttachment.java      |    2 +-
 .../commons/mail2/javax}/EmailConstants.java       |    2 +-
 .../commons/mail2/javax}/EmailException.java       |    2 +-
 .../apache/commons/mail2/javax}/EmailUtils.java    |    4 +-
 .../org/apache/commons/mail2/javax}/HtmlEmail.java |    2 +-
 .../commons/mail2/javax}/ImageHtmlEmail.java       |    4 +-
 .../commons/mail2/javax}/MultiPartEmail.java       |    4 +-
 .../apache/commons/mail2/javax}/SimpleEmail.java   |    2 +-
 .../javax}/activation/InputStreamDataSource.java   |    2 +-
 .../mail2/javax}/activation/PathDataSource.java    |    2 +-
 .../mail2/javax}/activation/package-info.java      |    2 +-
 .../apache/commons/mail2/javax}/package-info.java  |    2 +-
 .../javax}/resolver/DataSourceBaseResolver.java    |    4 +-
 .../resolver/DataSourceClassPathResolver.java      |    2 +-
 .../resolver/DataSourceCompositeResolver.java      |    4 +-
 .../javax}/resolver/DataSourceFileResolver.java    |    2 +-
 .../javax}/resolver/DataSourcePathResolver.java    |    4 +-
 .../javax}/resolver/DataSourceUrlResolver.java     |    2 +-
 .../mail2/javax}/resolver/package-info.java        |    2 +-
 .../javax}/util/IDNEmailAddressConverter.java      |    2 +-
 .../mail2/javax}/util/MimeMessageParser.java       |    4 +-
 .../mail2/javax}/util/MimeMessageUtils.java        |    2 +-
 .../commons/mail2/javax}/util/package-info.java    |    2 +-
 .../src}/main/resources/META-INF/mime.types        |    0
 .../commons/mail2/javax}/AbstractEmailTest.java    |    5 +-
 .../mail2/javax}/DefaultAuthenticatorTest.java     |    3 +-
 .../commons/mail2/javax}/EmailAttachmentTest.java  |    3 +-
 .../commons/mail2/javax}/EmailConstantsTest.java   |    3 +-
 .../apache/commons/mail2/javax}/EmailLiveTest.java |   15 +-
 .../org/apache/commons/mail2/javax}/EmailTest.java |    7 +-
 .../commons/mail2/javax}/EmailUtilsTest.java       |    3 +-
 .../apache/commons/mail2/javax}/HtmlEmailTest.java |   13 +-
 .../commons/mail2/javax}/ImageHtmlEmailTest.java   |   17 +-
 .../mail2/javax}/InputStreamDataSourceTest.java    |    4 +-
 .../commons/mail2/javax}/InvalidAddressTest.java   |    5 +-
 .../mail2/javax}/InvalidInternetAddressTest.java   |    2 +-
 .../commons/mail2/javax}/MultiPartEmailTest.java   |    8 +-
 .../mail2/javax}/SendWithAttachmentsTest.java      |    9 +-
 .../commons/mail2/javax}/SimpleEmailTest.java      |    7 +-
 .../mail2/javax}/mocks/MockEmailConcrete.java      |    4 +-
 .../mail2/javax}/mocks/MockHtmlEmailConcrete.java  |    4 +-
 .../javax}/mocks/MockImageHtmlEmailConcrete.java   |    4 +-
 .../javax}/mocks/MockMultiPartEmailConcrete.java   |    4 +-
 .../mail2/javax}/mocks/MockSimpleEmail.java        |    4 +-
 .../commons/mail2/javax}/mocks/package-info.java   |    2 +-
 .../resolver/AbstractDataSourceResolverTest.java   |    2 +-
 .../resolver/DataSourceClassPathResolverTest.java  |    5 +-
 .../resolver/DataSourceCompositeResolverTest.java  |    7 +-
 .../resolver/DataSourceFileResolverTest.java       |    5 +-
 .../resolver/DataSourcePathResolverTest.java       |    5 +-
 .../javax}/resolver/DataSourceUrlResolverTest.java |    5 +-
 .../mail2/javax}/settings/EmailConfiguration.java  |    4 +-
 .../mail2/javax}/settings/package-info.java        |    2 +-
 .../javax}/util/IDNEmailAddressConverterTest.java  |    3 +-
 .../mail2/javax}/util/MimeMessageParserTest.java   |    6 +-
 .../test/resources/attachments/autoloadertest.html |    0
 .../test/resources/attachments/classpathtest.html  |    0
 .../resources/attachments/download_email.cgi.html  |    0
 .../src}/test/resources/attachments/logo.pdf       |  Bin
 .../src}/test/resources/eml/attachment-only.eml    |    0
 .../eml/html-attachment-content-disposition.eml    |    0
 .../eml/html-attachment-encoded-filename.eml       |    0
 .../src}/test/resources/eml/html-attachment.eml    |    0
 .../src}/test/resources/eml/multipart-report.eml   |    0
 .../eml/multipart-text-attachment-only.eml         |    0
 .../resources/eml/multipart-text-attachment.eml    |    0
 .../eml/outofmemory-no-header-seperation.eml       |    0
 .../src}/test/resources/eml/simple-reply.eml       |    0
 .../src}/test/resources/eml/simple.eml             |    0
 .../src}/test/resources/html/www.apache.org.html   |    0
 .../src}/test/resources/images/asf_logo_wide.gif   |  Bin
 .../src}/test/resources/images/contentTypeTest.gif |  Bin
 .../src}/test/resources/images/contentTypeTest.jpg |  Bin
 .../src}/test/resources/images/contentTypeTest.png |  Bin
 .../test/resources/images/logos/maven-feather.png  |  Bin
 .../org.mockito.plugins.MockMaker                  |    0
 pom.xml                                            | 1023 ++++++++++----------
 .../apache/commons/mail/ByteArrayDataSource.java   |  209 ----
 83 files changed, 765 insertions(+), 827 deletions(-)

diff --git a/commons-email-javax/pom.xml b/commons-email-javax/pom.xml
new file mode 100644
index 0000000..12966cd
--- /dev/null
+++ b/commons-email-javax/pom.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <groupId>org.apache.commons</groupId>
+    <artifactId>commons-email2-parent</artifactId>
+    <version>2.0.0-M1-SNAPSHOT</version>
+    <relativePath>../</relativePath>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>commons-email2-javax</artifactId>
+  <name>Apache Commons Email for Javax</name>
+
+  <inceptionYear>2001</inceptionYear>
+  <description>Apache Commons Email provides an API for sending email, simplifying the JavaMail Javax API.</description>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.sun.mail</groupId>
+      <artifactId>jakarta.mail</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.subethamail</groupId>
+      <artifactId>subethasmtp</artifactId>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>javax.mail</groupId>
+          <artifactId>mail</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <properties>
+    <commons.parent.dir>${basedir}/..</commons.parent.dir>
+  </properties>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>${basedir}/src/main/resources</directory>
+      </resource>
+      <!-- include NOTICE/LICENSE in generated jar -->
+      <resource>
+        <directory>${commons.parent.dir}</directory>
+        <targetPath>META-INF</targetPath>
+        <includes>
+          <include>NOTICE.txt</include>
+          <include>LICENSE.txt</include>
+        </includes>
+      </resource>
+    </resources>
+
+    <testResources>
+      <testResource>
+        <directory>src/test/resources</directory>
+      </testResource>
+      <!-- include NOTICE/LICENSE in generated test jar -->
+      <testResource>
+        <directory>${commons.parent.dir}</directory>
+        <targetPath>META-INF</targetPath>
+        <includes>
+          <include>NOTICE.txt</include>
+          <include>LICENSE.txt</include>
+        </includes>
+      </testResource>
+    </testResources>
+  </build>
+
+</project>
diff --git a/src/conf/spotbugs-exclude-filter.xml b/commons-email-javax/src/conf/spotbugs-exclude-filter.xml
similarity index 80%
rename from src/conf/spotbugs-exclude-filter.xml
rename to commons-email-javax/src/conf/spotbugs-exclude-filter.xml
index 4bc0ee3..918b341 100644
--- a/src/conf/spotbugs-exclude-filter.xml
+++ b/commons-email-javax/src/conf/spotbugs-exclude-filter.xml
@@ -42,15 +42,15 @@
   </Match>
 
   <!-- False positives in Java 11+ 
-    Error:  Load of known null value in org.apache.commons.mail.resolver.DataSourceClassPathResolver.resolve(String, boolean)
-     [org.apache.commons.mail.resolver.DataSourceClassPathResolver]
+    Error:  Load of known null value in org.apache.commons.mail2.javax.resolver.DataSourceClassPathResolver.resolve(String, boolean)
+     [org.apache.commons.mail2.javax.resolver.DataSourceClassPathResolver]
      At DataSourceClassPathResolver.java:[line 115] NP_LOAD_OF_KNOWN_NULL_VALUE
-    Error:  Redundant nullcheck of inputStream which is known to be null in org.apache.commons.mail.resolver.DataSourceClassPathResolver.resolve(String, boolean)
-     [org.apache.commons.mail.resolver.DataSourceClassPathResolver]
+    Error:  Redundant nullcheck of inputStream which is known to be null in org.apache.commons.mail2.javax.resolver.DataSourceClassPathResolver.resolve(String, boolean)
+     [org.apache.commons.mail2.javax.resolver.DataSourceClassPathResolver]
      Redundant null check at DataSourceClassPathResolver.java:[line 115] RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE
   -->
   <Match>
-    <Class name="org.apache.commons.mail.resolver.DataSourceClassPathResolver" />
+    <Class name="org.apache.commons.mail2.javax.resolver.DataSourceClassPathResolver" />
     <Method name="resolve" params="java.lang.String, boolean" returns="javax.activation.DataSource"/>
     <Or>
       <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" />
diff --git a/src/main/java/org/apache/commons/mail/DataSourceResolver.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/DataSourceResolver.java
similarity index 97%
rename from src/main/java/org/apache/commons/mail/DataSourceResolver.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/DataSourceResolver.java
index c76f136..16fd84f 100644
--- a/src/main/java/org/apache/commons/mail/DataSourceResolver.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/DataSourceResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.io.IOException;
 
diff --git a/src/main/java/org/apache/commons/mail/DefaultAuthenticator.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/DefaultAuthenticator.java
similarity index 97%
rename from src/main/java/org/apache/commons/mail/DefaultAuthenticator.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/DefaultAuthenticator.java
index 6afc9f4..5eacdd7 100644
--- a/src/main/java/org/apache/commons/mail/DefaultAuthenticator.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/DefaultAuthenticator.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import javax.mail.Authenticator;
 import javax.mail.PasswordAuthentication;
diff --git a/src/main/java/org/apache/commons/mail/Email.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/Email.java
similarity index 99%
rename from src/main/java/org/apache/commons/mail/Email.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/Email.java
index 3bd3395..88640aa 100644
--- a/src/main/java/org/apache/commons/mail/Email.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/Email.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.io.UnsupportedEncodingException;
 import java.nio.charset.Charset;
@@ -43,7 +43,7 @@ import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
-import org.apache.commons.mail.util.IDNEmailAddressConverter;
+import org.apache.commons.mail2.javax.util.IDNEmailAddressConverter;
 
 /**
  * The abstract class for all email messages. This class sets the sender's email, name, receiver's email, name, subject, and send date.
diff --git a/src/main/java/org/apache/commons/mail/EmailAttachment.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailAttachment.java
similarity index 98%
rename from src/main/java/org/apache/commons/mail/EmailAttachment.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailAttachment.java
index 5cdcdef..e992deb 100644
--- a/src/main/java/org/apache/commons/mail/EmailAttachment.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailAttachment.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.net.URL;
 
diff --git a/src/main/java/org/apache/commons/mail/EmailConstants.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailConstants.java
similarity index 99%
rename from src/main/java/org/apache/commons/mail/EmailConstants.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailConstants.java
index c12dd49..58db1bd 100644
--- a/src/main/java/org/apache/commons/mail/EmailConstants.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailConstants.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.nio.charset.StandardCharsets;
 import java.time.Duration;
diff --git a/src/main/java/org/apache/commons/mail/EmailException.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailException.java
similarity index 99%
rename from src/main/java/org/apache/commons/mail/EmailException.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailException.java
index 1ac9ef7..7d59198 100644
--- a/src/main/java/org/apache/commons/mail/EmailException.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.io.OutputStreamWriter;
 import java.io.PrintStream;
diff --git a/src/main/java/org/apache/commons/mail/EmailUtils.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailUtils.java
similarity index 98%
rename from src/main/java/org/apache/commons/mail/EmailUtils.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailUtils.java
index 0fc10e3..3559701 100644
--- a/src/main/java/org/apache/commons/mail/EmailUtils.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/EmailUtils.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.io.File;
 import java.io.IOException;
@@ -29,7 +29,7 @@ import java.util.Random;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.commons.mail.util.MimeMessageUtils;
+import org.apache.commons.mail2.javax.util.MimeMessageUtils;
 
 /**
  * Utility methods used by commons-email.
diff --git a/src/main/java/org/apache/commons/mail/HtmlEmail.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/HtmlEmail.java
similarity index 99%
rename from src/main/java/org/apache/commons/mail/HtmlEmail.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/HtmlEmail.java
index c293a1f..9e44f25 100644
--- a/src/main/java/org/apache/commons/mail/HtmlEmail.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/HtmlEmail.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/src/main/java/org/apache/commons/mail/ImageHtmlEmail.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/ImageHtmlEmail.java
similarity index 98%
rename from src/main/java/org/apache/commons/mail/ImageHtmlEmail.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/ImageHtmlEmail.java
index 18dd1d8..9728867 100644
--- a/src/main/java/org/apache/commons/mail/ImageHtmlEmail.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/ImageHtmlEmail.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.io.IOException;
 import java.util.HashMap;
@@ -73,7 +73,7 @@ public class ImageHtmlEmail extends HtmlEmail {
     /**
      * Does the work of actually building the MimeMessage.
      *
-     * @see org.apache.commons.mail.HtmlEmail#buildMimeMessage()
+     * @see org.apache.commons.mail2.javax.HtmlEmail#buildMimeMessage()
      * @throws EmailException building the MimeMessage failed
      */
     @Override
diff --git a/src/main/java/org/apache/commons/mail/MultiPartEmail.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/MultiPartEmail.java
similarity index 99%
rename from src/main/java/org/apache/commons/mail/MultiPartEmail.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/MultiPartEmail.java
index 482ad4e..4120edf 100644
--- a/src/main/java/org/apache/commons/mail/MultiPartEmail.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/MultiPartEmail.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.io.File;
 import java.io.IOException;
@@ -38,7 +38,7 @@ import javax.mail.internet.MimeMultipart;
 import javax.mail.internet.MimePart;
 import javax.mail.internet.MimeUtility;
 
-import org.apache.commons.mail.activation.PathDataSource;
+import org.apache.commons.mail2.javax.activation.PathDataSource;
 
 /**
  * A multipart email.
diff --git a/src/main/java/org/apache/commons/mail/SimpleEmail.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/SimpleEmail.java
similarity index 97%
rename from src/main/java/org/apache/commons/mail/SimpleEmail.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/SimpleEmail.java
index 79e0d6d..023fe58 100644
--- a/src/main/java/org/apache/commons/mail/SimpleEmail.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/SimpleEmail.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 /**
  * Sends simple Internet email messages without attachments.
diff --git a/src/main/java/org/apache/commons/mail/activation/InputStreamDataSource.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/activation/InputStreamDataSource.java
similarity index 98%
rename from src/main/java/org/apache/commons/mail/activation/InputStreamDataSource.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/activation/InputStreamDataSource.java
index f8f2b78..189ff38 100644
--- a/src/main/java/org/apache/commons/mail/activation/InputStreamDataSource.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/activation/InputStreamDataSource.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.mail.activation;
+package org.apache.commons.mail2.javax.activation;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/main/java/org/apache/commons/mail/activation/PathDataSource.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/activation/PathDataSource.java
similarity index 98%
rename from src/main/java/org/apache/commons/mail/activation/PathDataSource.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/activation/PathDataSource.java
index bb425b1..6174b4b 100644
--- a/src/main/java/org/apache/commons/mail/activation/PathDataSource.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/activation/PathDataSource.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.commons.mail.activation;
+package org.apache.commons.mail2.javax.activation;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/main/java/org/apache/commons/mail/activation/package-info.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/activation/package-info.java
similarity index 94%
rename from src/main/java/org/apache/commons/mail/activation/package-info.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/activation/package-info.java
index a907170..8da05a2 100644
--- a/src/main/java/org/apache/commons/mail/activation/package-info.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/activation/package-info.java
@@ -18,4 +18,4 @@
 /**
  * Contains JavaBeans Activation Framework implementations.
  */
-package org.apache.commons.mail.activation;
+package org.apache.commons.mail2.javax.activation;
diff --git a/src/main/java/org/apache/commons/mail/package-info.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/package-info.java
similarity index 96%
rename from src/main/java/org/apache/commons/mail/package-info.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/package-info.java
index 8bac3d7..6097b1c 100644
--- a/src/main/java/org/apache/commons/mail/package-info.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/package-info.java
@@ -17,4 +17,4 @@
 /**
  * Commons-Email aims to provide a API for sending email. It is built on top of the Java Mail API, which it aims to simplify. All help is gratefully received.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
diff --git a/src/main/java/org/apache/commons/mail/resolver/DataSourceBaseResolver.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceBaseResolver.java
similarity index 95%
rename from src/main/java/org/apache/commons/mail/resolver/DataSourceBaseResolver.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceBaseResolver.java
index d408ae1..bc782b2 100644
--- a/src/main/java/org/apache/commons/mail/resolver/DataSourceBaseResolver.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceBaseResolver.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
-import org.apache.commons.mail.DataSourceResolver;
+import org.apache.commons.mail2.javax.DataSourceResolver;
 
 /**
  * Abstract class for resolvers.
diff --git a/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceClassPathResolver.java
similarity index 98%
rename from src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceClassPathResolver.java
index 4aaea98..ab0a46a 100644
--- a/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceClassPathResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/main/java/org/apache/commons/mail/resolver/DataSourceCompositeResolver.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceCompositeResolver.java
similarity index 96%
rename from src/main/java/org/apache/commons/mail/resolver/DataSourceCompositeResolver.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceCompositeResolver.java
index 6574d81..a08599c 100644
--- a/src/main/java/org/apache/commons/mail/resolver/DataSourceCompositeResolver.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceCompositeResolver.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import java.io.IOException;
 
 import javax.activation.DataSource;
 
-import org.apache.commons.mail.DataSourceResolver;
+import org.apache.commons.mail2.javax.DataSourceResolver;
 
 /**
  * A composite data source resolver. It allows to resolve data sources coming from multiple locations such as the classpath, the file system or an URL.
diff --git a/src/main/java/org/apache/commons/mail/resolver/DataSourceFileResolver.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceFileResolver.java
similarity index 98%
rename from src/main/java/org/apache/commons/mail/resolver/DataSourceFileResolver.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceFileResolver.java
index 218f478..2f993d6 100644
--- a/src/main/java/org/apache/commons/mail/resolver/DataSourceFileResolver.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceFileResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/src/main/java/org/apache/commons/mail/resolver/DataSourcePathResolver.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourcePathResolver.java
similarity index 96%
rename from src/main/java/org/apache/commons/mail/resolver/DataSourcePathResolver.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourcePathResolver.java
index c179df9..eac564e 100644
--- a/src/main/java/org/apache/commons/mail/resolver/DataSourcePathResolver.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourcePathResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import java.io.IOException;
 import java.nio.file.Files;
@@ -25,7 +25,7 @@ import java.nio.file.Paths;
 import javax.activation.DataSource;
 import javax.activation.FileTypeMap;
 
-import org.apache.commons.mail.activation.PathDataSource;
+import org.apache.commons.mail2.javax.activation.PathDataSource;
 
 /**
  * Creates a {@link DataSource} based on a {@link Path}. The implementation also resolves file resources.
diff --git a/src/main/java/org/apache/commons/mail/resolver/DataSourceUrlResolver.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceUrlResolver.java
similarity index 98%
rename from src/main/java/org/apache/commons/mail/resolver/DataSourceUrlResolver.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceUrlResolver.java
index f9f1d04..6721d13 100644
--- a/src/main/java/org/apache/commons/mail/resolver/DataSourceUrlResolver.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/DataSourceUrlResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/main/java/org/apache/commons/mail/resolver/package-info.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/package-info.java
similarity index 95%
rename from src/main/java/org/apache/commons/mail/resolver/package-info.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/package-info.java
index 05b7fec..633b4d0 100644
--- a/src/main/java/org/apache/commons/mail/resolver/package-info.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/resolver/package-info.java
@@ -22,4 +22,4 @@
  * <li>URL</li>
  * </ul>
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
diff --git a/src/main/java/org/apache/commons/mail/util/IDNEmailAddressConverter.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/IDNEmailAddressConverter.java
similarity index 98%
rename from src/main/java/org/apache/commons/mail/util/IDNEmailAddressConverter.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/IDNEmailAddressConverter.java
index f71d7c4..870d551 100644
--- a/src/main/java/org/apache/commons/mail/util/IDNEmailAddressConverter.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/IDNEmailAddressConverter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.util;
+package org.apache.commons.mail2.javax.util;
 
 import java.net.IDN;
 import java.util.function.Function;
diff --git a/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/MimeMessageParser.java
similarity index 99%
rename from src/main/java/org/apache/commons/mail/util/MimeMessageParser.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/MimeMessageParser.java
index ab0c1ac..ad5964d 100644
--- a/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/MimeMessageParser.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.util;
+package org.apache.commons.mail2.javax.util;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -40,7 +40,7 @@ import javax.mail.internet.MimePart;
 import javax.mail.internet.MimeUtility;
 import javax.mail.internet.ParseException;
 
-import org.apache.commons.mail.activation.InputStreamDataSource;
+import org.apache.commons.mail2.javax.activation.InputStreamDataSource;
 
 /**
  * Parses a MimeMessage and stores the individual parts such a plain text, HTML text and attachments.
diff --git a/src/main/java/org/apache/commons/mail/util/MimeMessageUtils.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/MimeMessageUtils.java
similarity index 99%
rename from src/main/java/org/apache/commons/mail/util/MimeMessageUtils.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/MimeMessageUtils.java
index 5a5abcb..1dc6155 100644
--- a/src/main/java/org/apache/commons/mail/util/MimeMessageUtils.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/MimeMessageUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.util;
+package org.apache.commons.mail2.javax.util;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/src/main/java/org/apache/commons/mail/util/package-info.java b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/package-info.java
similarity index 95%
rename from src/main/java/org/apache/commons/mail/util/package-info.java
rename to commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/package-info.java
index becfac1..9c49feb 100644
--- a/src/main/java/org/apache/commons/mail/util/package-info.java
+++ b/commons-email-javax/src/main/java/org/apache/commons/mail2/javax/util/package-info.java
@@ -17,4 +17,4 @@
 /**
  * This package provides some utility classes.
  */
-package org.apache.commons.mail.util;
+package org.apache.commons.mail2.javax.util;
diff --git a/src/main/resources/META-INF/mime.types b/commons-email-javax/src/main/resources/META-INF/mime.types
similarity index 100%
rename from src/main/resources/META-INF/mime.types
rename to commons-email-javax/src/main/resources/META-INF/mime.types
diff --git a/src/test/java/org/apache/commons/mail/AbstractEmailTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/AbstractEmailTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/mail/AbstractEmailTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/AbstractEmailTest.java
index 111859d..47e5f79 100644
--- a/src/test/java/org/apache/commons/mail/AbstractEmailTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/AbstractEmailTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -37,7 +37,8 @@ import javax.mail.Multipart;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.commons.mail.settings.EmailConfiguration;
+import org.apache.commons.mail2.javax.EmailUtils;
+import org.apache.commons.mail2.javax.settings.EmailConfiguration;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.mockito.Mockito;
diff --git a/src/test/java/org/apache/commons/mail/DefaultAuthenticatorTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/DefaultAuthenticatorTest.java
similarity index 94%
rename from src/test/java/org/apache/commons/mail/DefaultAuthenticatorTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/DefaultAuthenticatorTest.java
index 51783cf..14646c2 100644
--- a/src/test/java/org/apache/commons/mail/DefaultAuthenticatorTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/DefaultAuthenticatorTest.java
@@ -14,13 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import javax.mail.PasswordAuthentication;
 
+import org.apache.commons.mail2.javax.DefaultAuthenticator;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/src/test/java/org/apache/commons/mail/EmailAttachmentTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailAttachmentTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/mail/EmailAttachmentTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailAttachmentTest.java
index ac24db3..d2eba59 100644
--- a/src/test/java/org/apache/commons/mail/EmailAttachmentTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailAttachmentTest.java
@@ -14,12 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.net.URL;
 
+import org.apache.commons.mail2.javax.EmailAttachment;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/src/test/java/org/apache/commons/mail/EmailConstantsTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailConstantsTest.java
similarity index 92%
rename from src/test/java/org/apache/commons/mail/EmailConstantsTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailConstantsTest.java
index a4bb4d4..564085e 100644
--- a/src/test/java/org/apache/commons/mail/EmailConstantsTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailConstantsTest.java
@@ -15,12 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.time.Duration;
 
+import org.apache.commons.mail2.javax.EmailConstants;
 import org.junit.jupiter.api.Test;
 
 public class EmailConstantsTest {
diff --git a/src/test/java/org/apache/commons/mail/EmailLiveTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailLiveTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/mail/EmailLiveTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailLiveTest.java
index 8715bc7..317e18b 100644
--- a/src/test/java/org/apache/commons/mail/EmailLiveTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailLiveTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -33,8 +33,17 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.mail.resolver.DataSourceUrlResolver;
-import org.apache.commons.mail.settings.EmailConfiguration;
+import org.apache.commons.mail2.javax.DefaultAuthenticator;
+import org.apache.commons.mail2.javax.Email;
+import org.apache.commons.mail2.javax.EmailAttachment;
+import org.apache.commons.mail2.javax.EmailException;
+import org.apache.commons.mail2.javax.EmailUtils;
+import org.apache.commons.mail2.javax.HtmlEmail;
+import org.apache.commons.mail2.javax.ImageHtmlEmail;
+import org.apache.commons.mail2.javax.MultiPartEmail;
+import org.apache.commons.mail2.javax.SimpleEmail;
+import org.apache.commons.mail2.javax.resolver.DataSourceUrlResolver;
+import org.apache.commons.mail2.javax.settings.EmailConfiguration;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/src/test/java/org/apache/commons/mail/EmailTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/mail/EmailTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailTest.java
index b459406..60ae314 100644
--- a/src/test/java/org/apache/commons/mail/EmailTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -45,7 +45,10 @@ import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 import javax.mail.internet.ParseException;
 
-import org.apache.commons.mail.mocks.MockEmailConcrete;
+import org.apache.commons.mail2.javax.DefaultAuthenticator;
+import org.apache.commons.mail2.javax.EmailConstants;
+import org.apache.commons.mail2.javax.EmailException;
+import org.apache.commons.mail2.javax.mocks.MockEmailConcrete;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/src/test/java/org/apache/commons/mail/EmailUtilsTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailUtilsTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/mail/EmailUtilsTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailUtilsTest.java
index 71a5159..b82c4e2 100644
--- a/src/test/java/org/apache/commons/mail/EmailUtilsTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/EmailUtilsTest.java
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import org.apache.commons.mail2.javax.EmailUtils;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/src/test/java/org/apache/commons/mail/HtmlEmailTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/HtmlEmailTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/mail/HtmlEmailTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/HtmlEmailTest.java
index 3d011dc..f35dc29 100644
--- a/src/test/java/org/apache/commons/mail/HtmlEmailTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/HtmlEmailTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -32,9 +32,14 @@ import javax.activation.DataSource;
 import javax.activation.FileDataSource;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.commons.mail.mocks.MockHtmlEmailConcrete;
-import org.apache.commons.mail.settings.EmailConfiguration;
-import org.apache.commons.mail.util.MimeMessageParser;
+import org.apache.commons.mail2.javax.EmailAttachment;
+import org.apache.commons.mail2.javax.EmailConstants;
+import org.apache.commons.mail2.javax.EmailException;
+import org.apache.commons.mail2.javax.EmailUtils;
+import org.apache.commons.mail2.javax.HtmlEmail;
+import org.apache.commons.mail2.javax.mocks.MockHtmlEmailConcrete;
+import org.apache.commons.mail2.javax.settings.EmailConfiguration;
+import org.apache.commons.mail2.javax.util.MimeMessageParser;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
diff --git a/src/test/java/org/apache/commons/mail/ImageHtmlEmailTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/ImageHtmlEmailTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/mail/ImageHtmlEmailTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/ImageHtmlEmailTest.java
index d2227cd..c323ebe 100644
--- a/src/test/java/org/apache/commons/mail/ImageHtmlEmailTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/ImageHtmlEmailTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -36,12 +36,15 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.mail.mocks.MockImageHtmlEmailConcrete;
-import org.apache.commons.mail.resolver.DataSourceClassPathResolver;
-import org.apache.commons.mail.resolver.DataSourceCompositeResolver;
-import org.apache.commons.mail.resolver.DataSourceUrlResolver;
-import org.apache.commons.mail.util.MimeMessageParser;
-import org.apache.commons.mail.util.MimeMessageUtils;
+import org.apache.commons.mail2.javax.DataSourceResolver;
+import org.apache.commons.mail2.javax.EmailException;
+import org.apache.commons.mail2.javax.ImageHtmlEmail;
+import org.apache.commons.mail2.javax.mocks.MockImageHtmlEmailConcrete;
+import org.apache.commons.mail2.javax.resolver.DataSourceClassPathResolver;
+import org.apache.commons.mail2.javax.resolver.DataSourceCompositeResolver;
+import org.apache.commons.mail2.javax.resolver.DataSourceUrlResolver;
+import org.apache.commons.mail2.javax.util.MimeMessageParser;
+import org.apache.commons.mail2.javax.util.MimeMessageUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/src/test/java/org/apache/commons/mail/InputStreamDataSourceTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/InputStreamDataSourceTest.java
similarity index 95%
rename from src/test/java/org/apache/commons/mail/InputStreamDataSourceTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/InputStreamDataSourceTest.java
index 939b99f..7a4f230 100644
--- a/src/test/java/org/apache/commons/mail/InputStreamDataSourceTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/InputStreamDataSourceTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -24,7 +24,7 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
-import org.apache.commons.mail.activation.InputStreamDataSource;
+import org.apache.commons.mail2.javax.activation.InputStreamDataSource;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/src/test/java/org/apache/commons/mail/InvalidAddressTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/InvalidAddressTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/mail/InvalidAddressTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/InvalidAddressTest.java
index e82bd2e..cbc845f 100644
--- a/src/test/java/org/apache/commons/mail/InvalidAddressTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/InvalidAddressTest.java
@@ -14,13 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.util.stream.IntStream;
 
-import org.apache.commons.mail.mocks.MockEmailConcrete;
+import org.apache.commons.mail2.javax.EmailException;
+import org.apache.commons.mail2.javax.mocks.MockEmailConcrete;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/src/test/java/org/apache/commons/mail/InvalidInternetAddressTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/InvalidInternetAddressTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/mail/InvalidInternetAddressTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/InvalidInternetAddressTest.java
index a36412f..0b83d85 100644
--- a/src/test/java/org/apache/commons/mail/InvalidInternetAddressTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/InvalidInternetAddressTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertThrows;
diff --git a/src/test/java/org/apache/commons/mail/MultiPartEmailTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/MultiPartEmailTest.java
similarity index 97%
rename from src/test/java/org/apache/commons/mail/MultiPartEmailTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/MultiPartEmailTest.java
index a00cf4b..8d63823 100644
--- a/src/test/java/org/apache/commons/mail/MultiPartEmailTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/MultiPartEmailTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -32,7 +32,11 @@ import javax.activation.FileDataSource;
 import javax.activation.URLDataSource;
 import javax.mail.internet.MimeMultipart;
 
-import org.apache.commons.mail.mocks.MockMultiPartEmailConcrete;
+import org.apache.commons.mail2.javax.EmailAttachment;
+import org.apache.commons.mail2.javax.EmailConstants;
+import org.apache.commons.mail2.javax.EmailException;
+import org.apache.commons.mail2.javax.EmailUtils;
+import org.apache.commons.mail2.javax.mocks.MockMultiPartEmailConcrete;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/src/test/java/org/apache/commons/mail/SendWithAttachmentsTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/SendWithAttachmentsTest.java
similarity index 93%
rename from src/test/java/org/apache/commons/mail/SendWithAttachmentsTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/SendWithAttachmentsTest.java
index fb7a950..8f78008 100644
--- a/src/test/java/org/apache/commons/mail/SendWithAttachmentsTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/SendWithAttachmentsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import java.io.File;
 import java.io.IOException;
@@ -22,8 +22,11 @@ import java.net.URL;
 
 import javax.mail.internet.MimeUtility;
 
-import org.apache.commons.mail.mocks.MockHtmlEmailConcrete;
-import org.apache.commons.mail.settings.EmailConfiguration;
+import org.apache.commons.mail2.javax.EmailAttachment;
+import org.apache.commons.mail2.javax.EmailConstants;
+import org.apache.commons.mail2.javax.EmailException;
+import org.apache.commons.mail2.javax.mocks.MockHtmlEmailConcrete;
+import org.apache.commons.mail2.javax.settings.EmailConfiguration;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/src/test/java/org/apache/commons/mail/SimpleEmailTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/SimpleEmailTest.java
similarity index 94%
rename from src/test/java/org/apache/commons/mail/SimpleEmailTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/SimpleEmailTest.java
index 95c1fb9..48ac265 100644
--- a/src/test/java/org/apache/commons/mail/SimpleEmailTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/SimpleEmailTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail;
+package org.apache.commons.mail2.javax;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -23,7 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
-import org.apache.commons.mail.mocks.MockSimpleEmail;
+import org.apache.commons.mail2.javax.EmailConstants;
+import org.apache.commons.mail2.javax.EmailException;
+import org.apache.commons.mail2.javax.EmailUtils;
+import org.apache.commons.mail2.javax.mocks.MockSimpleEmail;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
diff --git a/src/test/java/org/apache/commons/mail/mocks/MockEmailConcrete.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockEmailConcrete.java
similarity index 93%
rename from src/test/java/org/apache/commons/mail/mocks/MockEmailConcrete.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockEmailConcrete.java
index 7626894..39dd063 100644
--- a/src/test/java/org/apache/commons/mail/mocks/MockEmailConcrete.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockEmailConcrete.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.mocks;
+package org.apache.commons.mail2.javax.mocks;
 
-import org.apache.commons.mail.Email;
+import org.apache.commons.mail2.javax.Email;
 
 /**
  * Concrete Implementation on the Abstract Email Class (used to allow testing only). Supplies getters for methods that normally only have setters.
diff --git a/src/test/java/org/apache/commons/mail/mocks/MockHtmlEmailConcrete.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockHtmlEmailConcrete.java
similarity index 93%
rename from src/test/java/org/apache/commons/mail/mocks/MockHtmlEmailConcrete.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockHtmlEmailConcrete.java
index de2d782..27b81a9 100644
--- a/src/test/java/org/apache/commons/mail/mocks/MockHtmlEmailConcrete.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockHtmlEmailConcrete.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.mocks;
+package org.apache.commons.mail2.javax.mocks;
 
 import java.io.IOException;
 
 import javax.mail.MessagingException;
 
-import org.apache.commons.mail.HtmlEmail;
+import org.apache.commons.mail2.javax.HtmlEmail;
 
 /**
  * Extension of the HtmlEmail Class (used to allow testing only)
diff --git a/src/test/java/org/apache/commons/mail/mocks/MockImageHtmlEmailConcrete.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockImageHtmlEmailConcrete.java
similarity index 92%
rename from src/test/java/org/apache/commons/mail/mocks/MockImageHtmlEmailConcrete.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockImageHtmlEmailConcrete.java
index 24ad5e6..ece2d61 100644
--- a/src/test/java/org/apache/commons/mail/mocks/MockImageHtmlEmailConcrete.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockImageHtmlEmailConcrete.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.mocks;
+package org.apache.commons.mail2.javax.mocks;
 
 import java.io.IOException;
 
 import javax.mail.MessagingException;
 
-import org.apache.commons.mail.ImageHtmlEmail;
+import org.apache.commons.mail2.javax.ImageHtmlEmail;
 
 /**
  * Extension of the ImageHtmlEmail Class (used to allow testing only)
diff --git a/src/test/java/org/apache/commons/mail/mocks/MockMultiPartEmailConcrete.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockMultiPartEmailConcrete.java
similarity index 93%
rename from src/test/java/org/apache/commons/mail/mocks/MockMultiPartEmailConcrete.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockMultiPartEmailConcrete.java
index 600f8d6..0bfe971 100644
--- a/src/test/java/org/apache/commons/mail/mocks/MockMultiPartEmailConcrete.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockMultiPartEmailConcrete.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.mocks;
+package org.apache.commons.mail2.javax.mocks;
 
 import java.io.IOException;
 
 import javax.mail.MessagingException;
 
-import org.apache.commons.mail.MultiPartEmail;
+import org.apache.commons.mail2.javax.MultiPartEmail;
 
 /**
  * Extension of MultiPartEmail Class (used to allow testing only)
diff --git a/src/test/java/org/apache/commons/mail/mocks/MockSimpleEmail.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockSimpleEmail.java
similarity index 92%
rename from src/test/java/org/apache/commons/mail/mocks/MockSimpleEmail.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockSimpleEmail.java
index 2b399c3..2f740c3 100644
--- a/src/test/java/org/apache/commons/mail/mocks/MockSimpleEmail.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/MockSimpleEmail.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.mocks;
+package org.apache.commons.mail2.javax.mocks;
 
-import org.apache.commons.mail.SimpleEmail;
+import org.apache.commons.mail2.javax.SimpleEmail;
 
 /**
  * Extension of SimpleEmail Class (used to allow testing only)
diff --git a/src/test/java/org/apache/commons/mail/mocks/package-info.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/package-info.java
similarity index 95%
rename from src/test/java/org/apache/commons/mail/mocks/package-info.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/package-info.java
index e3ac848..e9a7152 100644
--- a/src/test/java/org/apache/commons/mail/mocks/package-info.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/mocks/package-info.java
@@ -18,4 +18,4 @@
 /**
  * This package provides mock email implementations for testing.
  */
-package org.apache.commons.mail.mocks;
+package org.apache.commons.mail2.javax.mocks;
diff --git a/src/test/java/org/apache/commons/mail/resolver/AbstractDataSourceResolverTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/AbstractDataSourceResolverTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/mail/resolver/AbstractDataSourceResolverTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/AbstractDataSourceResolverTest.java
index b18e3a2..df46084 100644
--- a/src/test/java/org/apache/commons/mail/resolver/AbstractDataSourceResolverTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/AbstractDataSourceResolverTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/test/java/org/apache/commons/mail/resolver/DataSourceClassPathResolverTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceClassPathResolverTest.java
similarity index 93%
rename from src/test/java/org/apache/commons/mail/resolver/DataSourceClassPathResolverTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceClassPathResolverTest.java
index 7ac8e2d..a5c42ca 100644
--- a/src/test/java/org/apache/commons/mail/resolver/DataSourceClassPathResolverTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceClassPathResolverTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -23,7 +23,8 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.io.IOException;
 
-import org.apache.commons.mail.DataSourceResolver;
+import org.apache.commons.mail2.javax.DataSourceResolver;
+import org.apache.commons.mail2.javax.resolver.DataSourceClassPathResolver;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/src/test/java/org/apache/commons/mail/resolver/DataSourceCompositeResolverTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceCompositeResolverTest.java
similarity index 90%
rename from src/test/java/org/apache/commons/mail/resolver/DataSourceCompositeResolverTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceCompositeResolverTest.java
index fc3d08d..a995c61 100644
--- a/src/test/java/org/apache/commons/mail/resolver/DataSourceCompositeResolverTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceCompositeResolverTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -23,7 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.io.IOException;
 import java.net.URL;
 
-import org.apache.commons.mail.DataSourceResolver;
+import org.apache.commons.mail2.javax.DataSourceResolver;
+import org.apache.commons.mail2.javax.resolver.DataSourceClassPathResolver;
+import org.apache.commons.mail2.javax.resolver.DataSourceCompositeResolver;
+import org.apache.commons.mail2.javax.resolver.DataSourceUrlResolver;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/src/test/java/org/apache/commons/mail/resolver/DataSourceFileResolverTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceFileResolverTest.java
similarity index 92%
rename from src/test/java/org/apache/commons/mail/resolver/DataSourceFileResolverTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceFileResolverTest.java
index 83ce172..00d2fba 100644
--- a/src/test/java/org/apache/commons/mail/resolver/DataSourceFileResolverTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceFileResolverTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -24,7 +24,8 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.commons.mail.DataSourceResolver;
+import org.apache.commons.mail2.javax.DataSourceResolver;
+import org.apache.commons.mail2.javax.resolver.DataSourceFileResolver;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/src/test/java/org/apache/commons/mail/resolver/DataSourcePathResolverTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourcePathResolverTest.java
similarity index 92%
rename from src/test/java/org/apache/commons/mail/resolver/DataSourcePathResolverTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourcePathResolverTest.java
index 34759bb..cc8a85e 100644
--- a/src/test/java/org/apache/commons/mail/resolver/DataSourcePathResolverTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourcePathResolverTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -24,7 +24,8 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 import java.io.IOException;
 import java.nio.file.Paths;
 
-import org.apache.commons.mail.DataSourceResolver;
+import org.apache.commons.mail2.javax.DataSourceResolver;
+import org.apache.commons.mail2.javax.resolver.DataSourcePathResolver;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/src/test/java/org/apache/commons/mail/resolver/DataSourceUrlResolverTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceUrlResolverTest.java
similarity index 95%
rename from src/test/java/org/apache/commons/mail/resolver/DataSourceUrlResolverTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceUrlResolverTest.java
index 99d53ed..9740785 100644
--- a/src/test/java/org/apache/commons/mail/resolver/DataSourceUrlResolverTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/resolver/DataSourceUrlResolverTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.resolver;
+package org.apache.commons.mail2.javax.resolver;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
@@ -25,7 +25,8 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URL;
 
-import org.apache.commons.mail.DataSourceResolver;
+import org.apache.commons.mail2.javax.DataSourceResolver;
+import org.apache.commons.mail2.javax.resolver.DataSourceUrlResolver;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/src/test/java/org/apache/commons/mail/settings/EmailConfiguration.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/settings/EmailConfiguration.java
similarity index 96%
rename from src/test/java/org/apache/commons/mail/settings/EmailConfiguration.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/settings/EmailConfiguration.java
index 7a9760b..83e812e 100644
--- a/src/test/java/org/apache/commons/mail/settings/EmailConfiguration.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/settings/EmailConfiguration.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.settings;
+package org.apache.commons.mail2.javax.settings;
 
-import org.apache.commons.mail.EmailConstants;
+import org.apache.commons.mail2.javax.EmailConstants;
 
 /**
  * This class contains hard-coded configuration settings for the JUnit tests.
diff --git a/src/test/java/org/apache/commons/mail/settings/package-info.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/settings/package-info.java
similarity index 94%
rename from src/test/java/org/apache/commons/mail/settings/package-info.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/settings/package-info.java
index dda7e9c..2752a56 100644
--- a/src/test/java/org/apache/commons/mail/settings/package-info.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/settings/package-info.java
@@ -18,4 +18,4 @@
 /**
  * This package provides the test mail server configuration.
  */
-package org.apache.commons.mail.settings;
+package org.apache.commons.mail2.javax.settings;
diff --git a/src/test/java/org/apache/commons/mail/util/IDNEmailAddressConverterTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/util/IDNEmailAddressConverterTest.java
similarity index 96%
rename from src/test/java/org/apache/commons/mail/util/IDNEmailAddressConverterTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/util/IDNEmailAddressConverterTest.java
index 4ff635f..59c5949 100644
--- a/src/test/java/org/apache/commons/mail/util/IDNEmailAddressConverterTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/util/IDNEmailAddressConverterTest.java
@@ -14,12 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.util;
+package org.apache.commons.mail2.javax.util;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import javax.mail.internet.InternetAddress;
 
+import org.apache.commons.mail2.javax.util.IDNEmailAddressConverter;
 import org.junit.jupiter.api.Test;
 
 public class IDNEmailAddressConverterTest {
diff --git a/src/test/java/org/apache/commons/mail/util/MimeMessageParserTest.java b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/util/MimeMessageParserTest.java
similarity index 99%
rename from src/test/java/org/apache/commons/mail/util/MimeMessageParserTest.java
rename to commons-email-javax/src/test/java/org/apache/commons/mail2/javax/util/MimeMessageParserTest.java
index b454672..3b740d3 100644
--- a/src/test/java/org/apache/commons/mail/util/MimeMessageParserTest.java
+++ b/commons-email-javax/src/test/java/org/apache/commons/mail2/javax/util/MimeMessageParserTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.mail.util;
+package org.apache.commons.mail2.javax.util;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -31,7 +31,9 @@ import javax.activation.DataSource;
 import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.commons.mail.HtmlEmail;
+import org.apache.commons.mail2.javax.HtmlEmail;
+import org.apache.commons.mail2.javax.util.MimeMessageParser;
+import org.apache.commons.mail2.javax.util.MimeMessageUtils;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/src/test/resources/attachments/autoloadertest.html b/commons-email-javax/src/test/resources/attachments/autoloadertest.html
similarity index 100%
rename from src/test/resources/attachments/autoloadertest.html
rename to commons-email-javax/src/test/resources/attachments/autoloadertest.html
diff --git a/src/test/resources/attachments/classpathtest.html b/commons-email-javax/src/test/resources/attachments/classpathtest.html
similarity index 100%
rename from src/test/resources/attachments/classpathtest.html
rename to commons-email-javax/src/test/resources/attachments/classpathtest.html
diff --git a/src/test/resources/attachments/download_email.cgi.html b/commons-email-javax/src/test/resources/attachments/download_email.cgi.html
similarity index 100%
rename from src/test/resources/attachments/download_email.cgi.html
rename to commons-email-javax/src/test/resources/attachments/download_email.cgi.html
diff --git a/src/test/resources/attachments/logo.pdf b/commons-email-javax/src/test/resources/attachments/logo.pdf
similarity index 100%
rename from src/test/resources/attachments/logo.pdf
rename to commons-email-javax/src/test/resources/attachments/logo.pdf
diff --git a/src/test/resources/eml/attachment-only.eml b/commons-email-javax/src/test/resources/eml/attachment-only.eml
similarity index 100%
rename from src/test/resources/eml/attachment-only.eml
rename to commons-email-javax/src/test/resources/eml/attachment-only.eml
diff --git a/src/test/resources/eml/html-attachment-content-disposition.eml b/commons-email-javax/src/test/resources/eml/html-attachment-content-disposition.eml
similarity index 100%
rename from src/test/resources/eml/html-attachment-content-disposition.eml
rename to commons-email-javax/src/test/resources/eml/html-attachment-content-disposition.eml
diff --git a/src/test/resources/eml/html-attachment-encoded-filename.eml b/commons-email-javax/src/test/resources/eml/html-attachment-encoded-filename.eml
similarity index 100%
rename from src/test/resources/eml/html-attachment-encoded-filename.eml
rename to commons-email-javax/src/test/resources/eml/html-attachment-encoded-filename.eml
diff --git a/src/test/resources/eml/html-attachment.eml b/commons-email-javax/src/test/resources/eml/html-attachment.eml
similarity index 100%
rename from src/test/resources/eml/html-attachment.eml
rename to commons-email-javax/src/test/resources/eml/html-attachment.eml
diff --git a/src/test/resources/eml/multipart-report.eml b/commons-email-javax/src/test/resources/eml/multipart-report.eml
similarity index 100%
rename from src/test/resources/eml/multipart-report.eml
rename to commons-email-javax/src/test/resources/eml/multipart-report.eml
diff --git a/src/test/resources/eml/multipart-text-attachment-only.eml b/commons-email-javax/src/test/resources/eml/multipart-text-attachment-only.eml
similarity index 100%
rename from src/test/resources/eml/multipart-text-attachment-only.eml
rename to commons-email-javax/src/test/resources/eml/multipart-text-attachment-only.eml
diff --git a/src/test/resources/eml/multipart-text-attachment.eml b/commons-email-javax/src/test/resources/eml/multipart-text-attachment.eml
similarity index 100%
rename from src/test/resources/eml/multipart-text-attachment.eml
rename to commons-email-javax/src/test/resources/eml/multipart-text-attachment.eml
diff --git a/src/test/resources/eml/outofmemory-no-header-seperation.eml b/commons-email-javax/src/test/resources/eml/outofmemory-no-header-seperation.eml
similarity index 100%
rename from src/test/resources/eml/outofmemory-no-header-seperation.eml
rename to commons-email-javax/src/test/resources/eml/outofmemory-no-header-seperation.eml
diff --git a/src/test/resources/eml/simple-reply.eml b/commons-email-javax/src/test/resources/eml/simple-reply.eml
similarity index 100%
rename from src/test/resources/eml/simple-reply.eml
rename to commons-email-javax/src/test/resources/eml/simple-reply.eml
diff --git a/src/test/resources/eml/simple.eml b/commons-email-javax/src/test/resources/eml/simple.eml
similarity index 100%
rename from src/test/resources/eml/simple.eml
rename to commons-email-javax/src/test/resources/eml/simple.eml
diff --git a/src/test/resources/html/www.apache.org.html b/commons-email-javax/src/test/resources/html/www.apache.org.html
similarity index 100%
rename from src/test/resources/html/www.apache.org.html
rename to commons-email-javax/src/test/resources/html/www.apache.org.html
diff --git a/src/test/resources/images/asf_logo_wide.gif b/commons-email-javax/src/test/resources/images/asf_logo_wide.gif
similarity index 100%
rename from src/test/resources/images/asf_logo_wide.gif
rename to commons-email-javax/src/test/resources/images/asf_logo_wide.gif
diff --git a/src/test/resources/images/contentTypeTest.gif b/commons-email-javax/src/test/resources/images/contentTypeTest.gif
similarity index 100%
rename from src/test/resources/images/contentTypeTest.gif
rename to commons-email-javax/src/test/resources/images/contentTypeTest.gif
diff --git a/src/test/resources/images/contentTypeTest.jpg b/commons-email-javax/src/test/resources/images/contentTypeTest.jpg
similarity index 100%
rename from src/test/resources/images/contentTypeTest.jpg
rename to commons-email-javax/src/test/resources/images/contentTypeTest.jpg
diff --git a/src/test/resources/images/contentTypeTest.png b/commons-email-javax/src/test/resources/images/contentTypeTest.png
similarity index 100%
rename from src/test/resources/images/contentTypeTest.png
rename to commons-email-javax/src/test/resources/images/contentTypeTest.png
diff --git a/src/test/resources/images/logos/maven-feather.png b/commons-email-javax/src/test/resources/images/logos/maven-feather.png
similarity index 100%
rename from src/test/resources/images/logos/maven-feather.png
rename to commons-email-javax/src/test/resources/images/logos/maven-feather.png
diff --git a/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/commons-email-javax/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
similarity index 100%
rename from src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
rename to commons-email-javax/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
diff --git a/pom.xml b/pom.xml
index 1d8ed22..2e0999a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,541 +1,530 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  See the NOTICE file distributed with
-   this work for additional information regarding copyright ownership.
-   The ASF licenses this file to You under the Apache License, Version 2.0
-   (the "License"); you may not use this file except in compliance with
-   the License.  You may obtain a copy of the License at
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
 
-       http://www.apache.org/licenses/LICENSE-2.0
+      http://www.apache.org/licenses/LICENSE-2.0
 
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <parent>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-parent</artifactId>
-      <version>65</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>commons-email</artifactId>
-    <version>1.6.1-SNAPSHOT</version>
-    <name>Apache Commons Email</name>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <groupId>org.apache.commons</groupId>
+    <artifactId>commons-parent</artifactId>
+    <version>65</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>commons-email2-parent</artifactId>
+  <packaging>pom</packaging>
+  <version>2.0.0-M1-SNAPSHOT</version>
+  <name>Apache Commons Email Parent POM</name>
 
-    <inceptionYear>2001</inceptionYear>
-    <description>
-        Apache Commons Email provides an API for sending email, simplifying the JavaMail API.
-    </description>
+  <inceptionYear>2001</inceptionYear>
+  <description>Apache Commons Email provides an API for sending email, simplifying the JavaMail API.</description>
 
-    <url>https://commons.apache.org/proper/commons-email/</url>
+  <url>https://commons.apache.org/proper/commons-email/</url>
 
-    <issueManagement>
-        <system>jira</system>
-        <url>https://issues.apache.org/jira/browse/EMAIL</url>
-    </issueManagement>
+  <issueManagement>
+    <system>jira</system>
+    <url>https://issues.apache.org/jira/browse/EMAIL</url>
+  </issueManagement>
 
-    <scm>
-        <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-email</connection>
-        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-email</developerConnection>
-        <url>https://gitbox.apache.org/repos/asf/commons-email</url>
-    </scm>
-
-    <developers>
-        <developer>
-            <name>dIon Gillard</name>
-            <id>dion</id>
-            <email>dion@apache.org</email>
-            <organization>The Apache Software Foundation</organization>
-            <roles>
-              <role>Java Developer</role>
-            </roles>
-        </developer>
-        <developer>
-            <name>John McNally</name>
-            <id>jmcnally</id>
-            <email>jmcnally@collab.net</email>
-            <organization>CollabNet, Inc.</organization>
-            <roles />
-        </developer>
-        <developer>
-            <name>Quinton McCombs</name>
-            <id>quintonm</id>
-            <email>quintonm@bellsouth.net</email>
-            <organization>NequalsOne, LLC.</organization>
-            <roles />
-        </developer>
-        <developer>
-            <name>Eric Pugh</name>
-            <id>epugh</id>
-            <email>epugh@opensourceconnections.com</email>
-            <organization>OpenSource Connections</organization>
-            <roles />
-        </developer>
-        <developer>
-            <name>Daniel Rall</name>
-            <id>dlr</id>
-            <email>dlr@finemaltcoding.com</email>
-            <organization>CollabNet, Inc.</organization>
-            <roles />
-        </developer>
-        <developer>
-            <name>Jon Scott Stevens</name>
-            <id>jon</id>
-            <email>jon@latchkey.com</email>
-            <organization>CollabNet, Inc.</organization>
-            <roles />
-        </developer>
-        <developer>
-            <name>Jason van Zyl</name>
-            <id>jvanzyl</id>
-            <email>jason@zenplex.com</email>
-            <organization>Zenplex</organization>
-            <roles />
-        </developer>
-        <developer>
-            <name>Joe Germuska</name>
-            <id>germuska</id>
-            <email>Joe@Germuska.com</email>
-            <roles />
-        </developer>
-        <developer>
-            <name>Robert Burrell Donkin</name>
-            <id>rdonkin</id>
-            <email>rdonkin@apache.org</email>
-            <roles />
-        </developer>
-        <developer>
-            <name>Henning P. Schmiedehausen</name>
-            <id>henning</id>
-            <email>hps@intermeta.de</email>
-            <organization>INTERMETA - Gesellschaft fuer Mehrwertdienste mbH</organization>
-            <roles>
-              <role>Java Developer</role>
-            </roles>
-            <timezone>2</timezone>
-        </developer>
-        <developer>
-            <name>Stephen Colebourne</name>
-            <id>scolebourne</id>
-            <roles />
-            <timezone>0</timezone>
-        </developer>
-        <developer>
-            <name>Ben Speakmon</name>
-            <id>bspeakmon</id>
-            <email>bspeakmon@apache.org</email>
-            <organization>The Apache Software Foundation</organization>
-            <roles>
-                <role>Java Developer</role>
-            </roles>
-            <timezone>-8</timezone>
-        </developer>
-        <developer>
-            <name>Siegfried Goeschl</name>
-            <id>sgoeschl</id>
-            <email>sgoeschl@apache.org</email>
-            <roles>
-              <role>Java Developer</role>
-            </roles>
-            <timezone>2</timezone>
-        </developer>
-        <developer>
-            <name>Thomas Neidhart</name>
-            <id>tn</id>
-            <email>tn@apache.org</email>
-            <organization>The Apache Software Foundation</organization>
-            <roles />
-        </developer>
-        <developer>
-            <id>ggregory</id>
-            <name>Gary Gregory</name>
-            <email>ggregory at apache.org</email>
-            <url>https://www.garygregory.com</url>
-            <organization>The Apache Software Foundation</organization>
-            <organizationUrl>https://www.apache.org/</organizationUrl>
-            <roles>
-              <role>PMC Member</role>
-            </roles>
-            <timezone>America/New_York</timezone>
-            <properties>
-              <picUrl>https://people.apache.org/~ggregory/img/garydgregory80.png</picUrl>
-            </properties>
-        </developer>
-    </developers>
-    <contributors>
-        <contributor>
-            <name>Bindul Bhowmik</name>
-        </contributor>
-        <contributor>
-            <name>Colin Chalmers</name>
-            <email>colin.chalmers@maxware.nl</email>
-        </contributor>
-        <contributor>
-            <name>Frank Y. Kim</name>
-            <email>frank.kim@clearink.com</email>
-        </contributor>
-        <contributor>
-            <name>Regis Koenig</name>
-        </contributor>
-        <contributor>
-            <name>Stephen Kruger</name>
-        </contributor>
-        <contributor>
-            <name>Sean Legassick</name>
-            <email>sean@informage.net</email>
-        </contributor>
-        <contributor>
-            <name>Andrew Liles</name>
-        </contributor>
-        <contributor>
-            <name>Cedrik Lime</name>
-        </contributor>
-        <contributor>
-            <name>Mark Lowe</name>
-            <email>mark.lowe@boxstuff.com</email>
-        </contributor>
-        <contributor>
-            <name>Brett McLaughlin</name>
-            <email>bmclaugh@algx.net</email>
-        </contributor>
-        <contributor>
-            <name>Piero Ottuzzi</name>
-        </contributor>
-        <contributor>
-            <name>Niall Pemberton</name>
-        </contributor>
-        <contributor>
-            <name>Greg Ritter</name>
-            <email>greg@shwoop.com</email>
-        </contributor>
-        <contributor>
-            <name>Corey Scott</name>
-            <email>corey.scott@gmail.com</email>
-        </contributor>
-        <contributor>
-            <name>Eric Spiegelberg</name>
-            <email>eric@spiegs.com</email>
-        </contributor>
-        <contributor>
-            <name>Dominik Stadler</name>
-        </contributor>
-        <contributor>
-            <name>Matthias Wessendorf</name>
-            <email>matthias@wessendorf.net</email>
-        </contributor>
-        <contributor>
-            <name>Brandon Wolfe</name>
-        </contributor>
-        <contributor>
-            <name>Alexander Lehmann</name>
-            <email>alexlehm@gmail.com</email>
-        </contributor>
-        <contributor>
-            <name>Vegard Stuen</name>
-            <email>vegard.stuen@gmail.com</email>
-        </contributor>
-    </contributors>
+  <scm>
+    <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-email</connection>
+    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-email</developerConnection>
+    <url>https://gitbox.apache.org/repos/asf/commons-email</url>
+  </scm>
 
+  <dependencyManagement>
     <dependencies>
-        <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
-            <version>1.6.7</version>
-        </dependency>
-        <dependency>
-          <groupId>org.junit.jupiter</groupId>
-          <artifactId>junit-jupiter</artifactId>
-          <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-jdk14</artifactId>
-            <version>2.0.9</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>2.15.1</version>
-            <scope>test</scope>
-        </dependency>
-    	<dependency>
-    		<groupId>org.subethamail</groupId>
-    		<artifactId>subethasmtp</artifactId>
-    		<version>3.1.7</version>
-    		<scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>javax.mail</groupId>
-                    <artifactId>mail</artifactId>
-                </exclusion>
-            </exclusions>
-    	</dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <version>${mockito-core.version}</version>
-            <scope>test</scope>
-        </dependency>
+      <dependency>
+        <groupId>com.sun.mail</groupId>
+        <artifactId>jakarta.mail</artifactId>
+        <version>1.6.7</version>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-jdk14</artifactId>
+        <version>2.0.9</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>2.15.1</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.subethamail</groupId>
+        <artifactId>subethasmtp</artifactId>
+        <version>3.1.7</version>
+        <scope>test</scope>
+        <exclusions>
+          <exclusion>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+      <dependency>
+        <groupId>org.mockito</groupId>
+        <artifactId>mockito-core</artifactId>
+        <version>${mockito-core.version}</version>
+        <scope>test</scope>
+      </dependency>
     </dependencies>
+  </dependencyManagement>
+
+  <properties>
+    <commons.parent.dir>${basedir}</commons.parent.dir>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <commons.componentid>email</commons.componentid>
+    <commons.module.name>org.apache.commons.mail</commons.module.name>
+    <commons.jira.id>EMAIL</commons.jira.id>
+    <commons.jira.pid>12310474</commons.jira.pid>
+    <commons.release.version>2.0.0-M1</commons.release.version>
+    <commons.release.next>2.0.0-M2</commons.release.next>
+    <commons.release.desc>(Java 8 or above)</commons.release.desc>
+    <commons.rc.version>RC1</commons.rc.version>
+    <commons.bc.version>1.5</commons.bc.version>
+    <!-- override the default commons encoding property -->
+    <commons.encoding>UTF-8</commons.encoding>
+    <mockito-core.version>5.8.0</mockito-core.version>
+    <japicmp.skip>true</japicmp.skip>
+  </properties>
+
+  <build>
+    <defaultGoal>clean verify apache-rat:check checkstyle:check pmd:check pmd:cpd-check spotbugs:check javadoc:javadoc</defaultGoal>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-checkstyle-plugin</artifactId>
+          <configuration>
+            <configLocation>${commons.parent.dir}/src/conf/checkstyle.xml</configLocation>
+            <enableRulesSummary>false</enableRulesSummary>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>com.github.spotbugs</groupId>
+          <artifactId>spotbugs-maven-plugin</artifactId>
+          <configuration>
+            <excludeFilterFile>src/conf/spotbugs-exclude-filter.xml</excludeFilterFile>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- exclude test case support classes -->
+          <excludes>
+            <exclude>org/apache/commons/mail/mocks/*</exclude>
+            <exclude>org/apache/commons/mail/settings/*</exclude>
+            <exclude>**/Abstract*Test.java</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <descriptors>
+            <descriptor>src/assembly/bin.xml</descriptor>
+            <descriptor>src/assembly/src.xml</descriptor>
+          </descriptors>
+          <tarLongFileMode>gnu</tarLongFileMode>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive combine.children="append">
+            <manifest>
+              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+            </manifest>
+            <manifestEntries>
+              <Automatic-Module-Name>${commons.module.name}</Automatic-Module-Name>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-release-plugin</artifactId>
+        <configuration>
+          <mavenExecutorId>forked-path</mavenExecutorId>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-scm-publish-plugin</artifactId>
+        <configuration>
+          <ignorePathsToDelete>
+            <ignorePathToDelete>javadocs</ignorePathToDelete>
+          </ignorePathsToDelete>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>src/test/resources/eml/**</exclude>
+            <exclude>src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+      <!-- Declaration place matters must be after gpg. -->
+      <plugin>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-release-plugin</artifactId>
+        <configuration>
+          <distSvnStagingUrl>scm:svn:https://dist.apache.org/repos/dist/dev/commons/email</distSvnStagingUrl>
+        </configuration>
+        <executions>
+          <execution>
+            <id>detatch-distributions</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>detach-distributions</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>compress-site</id>
+            <phase>site</phase>
+            <goals>
+              <goal>compress-site</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>stage-distributions</id>
+            <phase>deploy</phase>
+            <goals>
+              <goal>stage-distributions</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <commons.componentid>email</commons.componentid>
-        <commons.module.name>org.apache.commons.mail</commons.module.name>
-        <commons.jira.id>EMAIL</commons.jira.id>
-        <commons.jira.pid>12310474</commons.jira.pid>
-        <commons.release.version>1.6.0</commons.release.version>
-        <commons.release.next>1.6.1</commons.release.next>
-        <commons.release.desc>(Java 8 or above)</commons.release.desc>
-        <commons.rc.version>RC1</commons.rc.version>
-        <commons.bc.version>1.5</commons.bc.version>
-        <!-- override the default commons encoding property -->
-        <commons.encoding>UTF-8</commons.encoding>
-        <mockito-core.version>5.8.0</mockito-core.version>
-    </properties>
+  <distributionManagement>
+    <site>
+      <id>apache.website</id>
+      <name>Apache Website</name>
+      <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/email/</url>
+    </site>
+  </distributionManagement>
 
-    <build>
-        <defaultGoal>clean verify apache-rat:check checkstyle:check japicmp:cmp pmd:check pmd:cpd-check spotbugs:check javadoc:javadoc</defaultGoal>
-        <pluginManagement>
-			<plugins>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-checkstyle-plugin</artifactId>
-                    <configuration>
-                        <configLocation>${basedir}/src/conf/checkstyle.xml</configLocation>
-                        <enableRulesSummary>false</enableRulesSummary>
-                        <violationSeverity>warning</violationSeverity>
-                    </configuration>
-                </plugin>
-			</plugins>
-		</pluginManagement>
+  <reporting>
+    <plugins>
+      <!-- generate the changes report from changes.xml -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-changes-plugin</artifactId>
+        <configuration>
+          <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>
+        </configuration>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>changes-report</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-pmd-plugin</artifactId>
+        <configuration>
+          <targetJdk>${maven.compiler.target}</targetJdk>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>src/test/resources/eml/**</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </reporting>
+
+  <modules>
+    <module>commons-email-javax</module>
+  </modules>
+  <profiles>
+    <profile>
+      <id>java17</id>
+      <!-- For testing with Powermock. -->
+      <activation>
+        <jdk>[17,)</jdk>
+      </activation>
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <!-- exclude test case support classes -->
-                    <excludes>
-                        <exclude>org/apache/commons/mail/mocks/*</exclude>
-                        <exclude>org/apache/commons/mail/settings/*</exclude>
-                        <exclude>**/Abstract*Test.java</exclude>
-                    </excludes>
-                </configuration>
-            </plugin>
-            <plugin>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <configuration>
-                    <descriptors>
-                        <descriptor>src/assembly/bin.xml</descriptor>
-                        <descriptor>src/assembly/src.xml</descriptor>
-                    </descriptors>
-                    <tarLongFileMode>gnu</tarLongFileMode>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive combine.children="append">
-                        <manifest>
-                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-                        </manifest>
-                        <manifestEntries>
-                            <Automatic-Module-Name>${commons.module.name}</Automatic-Module-Name>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-release-plugin</artifactId>
-                <configuration>
-                    <mavenExecutorId>forked-path</mavenExecutorId>
-                </configuration>
-            </plugin>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-scm-publish-plugin</artifactId>
-            <configuration>
-              <ignorePathsToDelete>
-                <ignorePathToDelete>javadocs</ignorePathToDelete>
-              </ignorePathsToDelete>
-            </configuration>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.rat</groupId>
-            <artifactId>apache-rat-plugin</artifactId>
-            <configuration>
-              <excludes>
-                <exclude>src/test/resources/eml/**</exclude>
-                <exclude>src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker</exclude>
-              </excludes>
-            </configuration>
-          </plugin>
-          <!-- Declaration place matters must be after gpg. -->
-          <plugin>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-release-plugin</artifactId>
+            <artifactId>maven-surefire-plugin</artifactId>
             <configuration>
-              <distSvnStagingUrl>scm:svn:https://dist.apache.org/repos/dist/dev/commons/email</distSvnStagingUrl>
+              <argLine>
+                --illegal-access=permit
+                --add-opens java.base/java.lang=ALL-UNNAMED
+                --add-opens java.base/java.net=ALL-UNNAMED
+                --add-opens java.base/java.io=ALL-UNNAMED
+                --add-opens java.base/java.util=ALL-UNNAMED
+                --add-opens
+                java.base/java.util.regex=ALL-UNNAMED
+                --add-opens
+                java.base/java.nio.charset=ALL-UNNAMED
+                --add-opens
+                java.base/sun.nio.cs=ALL-UNNAMED
+                --add-opens
+                java.logging/java.util.logging=ALL-UNNAMED
+              </argLine>
             </configuration>
-            <executions>
-              <execution>
-                <id>detatch-distributions</id>
-                <phase>verify</phase>
-                <goals>
-                  <goal>detach-distributions</goal>
-                </goals>
-              </execution>
-              <execution>
-                <id>compress-site</id>
-                <phase>site</phase>
-                <goals>
-                  <goal>compress-site</goal>
-                </goals>
-              </execution>
-              <execution>
-                <id>stage-distributions</id>
-                <phase>deploy</phase>
-                <goals>
-                  <goal>stage-distributions</goal>
-                </goals>
-              </execution>
-            </executions>
           </plugin>
-          <plugin>
-            <groupId>com.github.spotbugs</groupId>
-            <artifactId>spotbugs-maven-plugin</artifactId>
-            <configuration>
-              <excludeFilterFile>${basedir}/src/conf/spotbugs-exclude-filter.xml</excludeFilterFile>
-            </configuration>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-checkstyle-plugin</artifactId>
-          </plugin>
-      </plugins>
-    </build>
-
-    <distributionManagement>
-      <site>
-        <id>apache.website</id>
-        <name>Apache Website</name>
-        <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/email/</url>
-      </site>
-    </distributionManagement>
-
-    <reporting>
-        <plugins>
-            <!-- generate the changes report from changes.xml -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-changes-plugin</artifactId>
-                <configuration>
-                    <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>
-                </configuration>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>changes-report</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-pmd-plugin</artifactId>
-                <configuration>
-                    <targetJdk>${maven.compiler.target}</targetJdk>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.rat</groupId>
-                <artifactId>apache-rat-plugin</artifactId>
-                <configuration>
-                    <excludes>
-                        <exclude>src/test/resources/eml/**</exclude>
-                    </excludes>
-                </configuration>
-            </plugin>
-            <plugin>
-              <groupId>com.github.spotbugs</groupId>
-              <artifactId>spotbugs-maven-plugin</artifactId>
-              <configuration>
-                  <excludeFilterFile>${basedir}/src/conf/spotbugs-exclude-filter.xml</excludeFilterFile>
-              </configuration>
-            </plugin>
         </plugins>
-    </reporting>
-
-    <profiles>
-      <profile>
-        <id>java17</id>
-        <!-- For testing with Powermock. -->
-        <activation>
-          <jdk>[17,)</jdk>
-        </activation>
-        <build>
-          <plugins>
-            <plugin>
-              <groupId>org.apache.maven.plugins</groupId>
-              <artifactId>maven-surefire-plugin</artifactId>
-              <configuration>
-                <argLine>
-                  --illegal-access=permit
-                  --add-opens java.base/java.lang=ALL-UNNAMED
-                  --add-opens java.base/java.net=ALL-UNNAMED
-                  --add-opens java.base/java.io=ALL-UNNAMED
-                  --add-opens java.base/java.util=ALL-UNNAMED
-                  --add-opens java.base/java.util.regex=ALL-UNNAMED
-                  --add-opens java.base/java.nio.charset=ALL-UNNAMED
-                  --add-opens java.base/sun.nio.cs=ALL-UNNAMED
-                  --add-opens java.logging/java.util.logging=ALL-UNNAMED
-                </argLine>
-              </configuration>
-            </plugin>
-          </plugins>
-        </build>
-      </profile>
-      <profile>
-        <id>java8</id>
-          <activation>
-              <jdk>[1.8,11)</jdk>
-          </activation>
-          <properties>
-            <mockito-core.version>4.11.0</mockito-core.version>
-          </properties>
-      </profile>
+      </build>
+    </profile>
+    <profile>
+      <id>java8</id>
+      <activation>
+        <jdk>[1.8,11)</jdk>
+      </activation>
+      <properties>
+        <mockito-core.version>4.11.0</mockito-core.version>
+      </properties>
+    </profile>
+  </profiles>
 
-        <profile>
-            <id>rc</id>
-            <distributionManagement>
-                <!-- Cannot define in parent ATM, see COMMONSSITE-26 -->
-                <site>
-                    <id>apache.website</id>
-                    <name>Apache Commons Release Candidate Staging Site</name>
-                    <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/builds/commons/${commons.componentid}/${commons.release.version}/${commons.rc.version}/site</url>
-                </site>
-            </distributionManagement>
-        </profile>
-    </profiles>
+  <developers>
+    <developer>
+      <name>dIon Gillard</name>
+      <id>dion</id>
+      <email>dion@apache.org</email>
+      <organization>The Apache Software Foundation</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>John McNally</name>
+      <id>jmcnally</id>
+      <email>jmcnally@collab.net</email>
+      <organization>CollabNet, Inc.</organization>
+      <roles />
+    </developer>
+    <developer>
+      <name>Quinton McCombs</name>
+      <id>quintonm</id>
+      <email>quintonm@bellsouth.net</email>
+      <organization>NequalsOne, LLC.</organization>
+      <roles />
+    </developer>
+    <developer>
+      <name>Eric Pugh</name>
+      <id>epugh</id>
+      <email>epugh@opensourceconnections.com</email>
+      <organization>OpenSource Connections</organization>
+      <roles />
+    </developer>
+    <developer>
+      <name>Daniel Rall</name>
+      <id>dlr</id>
+      <email>dlr@finemaltcoding.com</email>
+      <organization>CollabNet, Inc.</organization>
+      <roles />
+    </developer>
+    <developer>
+      <name>Jon Scott Stevens</name>
+      <id>jon</id>
+      <email>jon@latchkey.com</email>
+      <organization>CollabNet, Inc.</organization>
+      <roles />
+    </developer>
+    <developer>
+      <name>Jason van Zyl</name>
+      <id>jvanzyl</id>
+      <email>jason@zenplex.com</email>
+      <organization>Zenplex</organization>
+      <roles />
+    </developer>
+    <developer>
+      <name>Joe Germuska</name>
+      <id>germuska</id>
+      <email>Joe@Germuska.com</email>
+      <roles />
+    </developer>
+    <developer>
+      <name>Robert Burrell Donkin</name>
+      <id>rdonkin</id>
+      <email>rdonkin@apache.org</email>
+      <roles />
+    </developer>
+    <developer>
+      <name>Henning P. Schmiedehausen</name>
+      <id>henning</id>
+      <email>hps@intermeta.de</email>
+      <organization>INTERMETA - Gesellschaft fuer Mehrwertdienste mbH</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>2</timezone>
+    </developer>
+    <developer>
+      <name>Stephen Colebourne</name>
+      <id>scolebourne</id>
+      <roles />
+      <timezone>0</timezone>
+    </developer>
+    <developer>
+      <name>Ben Speakmon</name>
+      <id>bspeakmon</id>
+      <email>bspeakmon@apache.org</email>
+      <organization>The Apache Software Foundation</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>-8</timezone>
+    </developer>
+    <developer>
+      <name>Siegfried Goeschl</name>
+      <id>sgoeschl</id>
+      <email>sgoeschl@apache.org</email>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>2</timezone>
+    </developer>
+    <developer>
+      <name>Thomas Neidhart</name>
+      <id>tn</id>
+      <email>tn@apache.org</email>
+      <organization>The Apache Software Foundation</organization>
+      <roles />
+    </developer>
+    <developer>
+      <id>ggregory</id>
+      <name>Gary Gregory</name>
+      <email>ggregory at apache.org</email>
+      <url>https://www.garygregory.com</url>
+      <organization>The Apache Software Foundation</organization>
+      <organizationUrl>https://www.apache.org/</organizationUrl>
+      <roles>
+        <role>PMC Member</role>
+      </roles>
+      <timezone>America/New_York</timezone>
+      <properties>
+        <picUrl>https://people.apache.org/~ggregory/img/garydgregory80.png</picUrl>
+      </properties>
+    </developer>
+  </developers>
+  <contributors>
+    <contributor>
+      <name>Bindul Bhowmik</name>
+    </contributor>
+    <contributor>
+      <name>Colin Chalmers</name>
+      <email>colin.chalmers@maxware.nl</email>
+    </contributor>
+    <contributor>
+      <name>Frank Y. Kim</name>
+      <email>frank.kim@clearink.com</email>
+    </contributor>
+    <contributor>
+      <name>Regis Koenig</name>
+    </contributor>
+    <contributor>
+      <name>Stephen Kruger</name>
+    </contributor>
+    <contributor>
+      <name>Sean Legassick</name>
+      <email>sean@informage.net</email>
+    </contributor>
+    <contributor>
+      <name>Andrew Liles</name>
+    </contributor>
+    <contributor>
+      <name>Cedrik Lime</name>
+    </contributor>
+    <contributor>
+      <name>Mark Lowe</name>
+      <email>mark.lowe@boxstuff.com</email>
+    </contributor>
+    <contributor>
+      <name>Brett McLaughlin</name>
+      <email>bmclaugh@algx.net</email>
+    </contributor>
+    <contributor>
+      <name>Piero Ottuzzi</name>
+    </contributor>
+    <contributor>
+      <name>Niall Pemberton</name>
+    </contributor>
+    <contributor>
+      <name>Greg Ritter</name>
+      <email>greg@shwoop.com</email>
+    </contributor>
+    <contributor>
+      <name>Corey Scott</name>
+      <email>corey.scott@gmail.com</email>
+    </contributor>
+    <contributor>
+      <name>Eric Spiegelberg</name>
+      <email>eric@spiegs.com</email>
+    </contributor>
+    <contributor>
+      <name>Dominik Stadler</name>
+    </contributor>
+    <contributor>
+      <name>Matthias Wessendorf</name>
+      <email>matthias@wessendorf.net</email>
+    </contributor>
+    <contributor>
+      <name>Brandon Wolfe</name>
+    </contributor>
+    <contributor>
+      <name>Alexander Lehmann</name>
+      <email>alexlehm@gmail.com</email>
+    </contributor>
+    <contributor>
+      <name>Vegard Stuen</name>
+      <email>vegard.stuen@gmail.com</email>
+    </contributor>
+  </contributors>
 
 </project>
diff --git a/src/main/java/org/apache/commons/mail/ByteArrayDataSource.java b/src/main/java/org/apache/commons/mail/ByteArrayDataSource.java
deleted file mode 100644
index 9aee2ed..0000000
--- a/src/main/java/org/apache/commons/mail/ByteArrayDataSource.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.mail;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
-
-import javax.activation.DataSource;
-
-/**
- * A typed DataSource for InputStream, byte array, and String.
- * <p>
- * From version 1.3.1, it is possible to set a name for this DataSource, and it is recommended to do so.
- * </p>
- *
- * @since 1.0
- * @deprecated since 1.4, use {@link javax.mail.util.ByteArrayDataSource} or {@link javax.mail.util.SharedByteArrayInputStream}.
- */
-@Deprecated
-public class ByteArrayDataSource implements DataSource {
-
-    /** Default content type. */
-    private static final String CONTENT_TYPE = "application/octet-stream";
-
-    /** Define the buffer size. */
-    public static final int BUFFER_SIZE = 512;
-
-    /** Stream containing the Data. */
-    private ByteArrayOutputStream outputStream;
-
-    /** The Content-contentType. */
-    private final String contentType;
-
-    /**
-     * The name associated with this data source. By default, the name is an empty string, similar to javax.mail.util.ByteArrayDataSource.
-     *
-     * @since 1.3.1
-     */
-    private String name = "";
-
-    /**
-     * Constructs a new instance from a byte array.
-     *
-     * @param data        A byte[].
-     * @param contentType A String.
-     * @throws IOException IOException
-     * @since 1.0
-     */
-    public ByteArrayDataSource(final byte[] data, final String contentType) throws IOException {
-        this.contentType = contentType;
-        try (ByteArrayInputStream bis = new ByteArrayInputStream(data)) {
-            read(bis);
-        }
-    }
-
-    /**
-     * Constructs a new instance from an input stream.
-     *
-     * @param inputStream An InputStream.
-     * @param contentType A String.
-     * @throws IOException IOException
-     * @since 1.0
-     */
-    public ByteArrayDataSource(final InputStream inputStream, final String contentType) throws IOException {
-        this.contentType = contentType;
-        this.read(inputStream);
-    }
-
-    /**
-     * Constructs a new instance from a String. N.B. assumes the data string can be converted using the charset iso-8859-1.
-     *
-     * @param data        A String.
-     * @param contentType A String.
-     * @throws IOException IOException
-     * @since 1.0
-     */
-    public ByteArrayDataSource(final String data, final String contentType) throws IOException {
-        this.contentType = contentType;
-        this.outputStream = new ByteArrayOutputStream();
-        try {
-            // Assumption that the string contains only ASCII characters!
-            // Else just pass in a charset into this constructor and use it in getBytes().
-            outputStream.write(data.getBytes(StandardCharsets.ISO_8859_1));
-            outputStream.flush();
-            outputStream.close();
-        } catch (final UnsupportedEncodingException e) {
-            throw new IOException("The Character Encoding is not supported.");
-        } finally {
-            outputStream.close();
-        }
-    }
-
-    /**
-     * Gets the content contentType.
-     *
-     * @return A String.
-     * @since 1.0
-     */
-    @Override
-    public String getContentType() {
-        return contentType == null ? CONTENT_TYPE : contentType;
-    }
-
-    /**
-     * Gets the input stream.
-     *
-     * @return An InputStream.
-     * @throws IOException IOException
-     * @since 1.0
-     */
-    @Override
-    public InputStream getInputStream() throws IOException {
-        if (outputStream == null) {
-            throw new IOException("no data");
-        }
-        return new ByteArrayInputStream(outputStream.toByteArray());
-    }
-
-    /**
-     * Gets the name.
-     *
-     * @return A String.
-     * @since 1.0
-     */
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Gets the OutputStream to write to.
-     *
-     * @return An OutputStream
-     * @since 1.0
-     */
-    @Override
-    public OutputStream getOutputStream() {
-        outputStream = new ByteArrayOutputStream();
-        return outputStream;
-    }
-
-    /**
-     * Reads the given input stream into this data source.
-     *
-     * @param inputStream An InputStream.
-     * @throws IOException IOException
-     */
-    private void read(final InputStream inputStream) throws IOException {
-        BufferedInputStream bis = null;
-        BufferedOutputStream osWriter = null;
-        try {
-            int length = 0;
-            final byte[] buffer = new byte[ByteArrayDataSource.BUFFER_SIZE];
-
-            bis = new BufferedInputStream(inputStream);
-            outputStream = new ByteArrayOutputStream();
-            osWriter = new BufferedOutputStream(outputStream);
-
-            // Write the InputData to OutputStream
-            while ((length = bis.read(buffer)) != -1) {
-                osWriter.write(buffer, 0, length);
-            }
-            osWriter.flush();
-            osWriter.close();
-        } finally {
-            if (bis != null) {
-                bis.close();
-            }
-            if (outputStream != null) {
-                outputStream.close();
-            }
-            if (osWriter != null) {
-                osWriter.close();
-            }
-        }
-    }
-
-    /**
-     * Sets the name for this DataSource.
-     *
-     * @param name The name.
-     * @since 1.3.1
-     */
-    public void setName(final String name) {
-        this.name = name;
-    }
-}