In earlier versions of Axiom, MIME processing was implemented using JavaMail. In Axiom 1.2.13 we use MIME4J to parse MIME messages and we have our own code to write MIME messages (see org.apache.axiom.mime.MultipartWriter). This means that we should be able to get rid of the JavaMail dependency. Currently, JavaMail is still used in the following places:
1. There are several places where javax.mail.internet.ContentType is used to parse MIME types. That needs to be replaced by something equivalent, maybe javax.activation.MimeType. Note that javax.mail.internet.ContentType is not used in any public API.
2. org.apache.axiom.attachments.lifecycle.impl.FileAccessor has several methods that declare javax.mail.MessagingException, although that exception is never thrown. Removing that exception would not break binary compatibility, but may break source code compatibility. However, it is very unlikely that any existing application code is using or extending the FileAccessor class (it is an SPI that is used by the Attachments class).
3. The classes in org.apache.axiom.mime.impl.javamail use JavaMail. They provide an implementation of the MultipartWriter API. However, it is not used by default (the default implementation is in org.apache.axiom.mime.impl.axiom). It only exists to allow users to switch back to JavaMail based MIME serialization in case issues are discovered in the org.apache.axiom.mime.impl.axiom implementation. Since no issues have ever been reported, we could move that implementation to axiom-compat so that it remains available but is no longer included in axiom-api.
4. org.apache.axiom.om.util.TextHelper has several methods that declare javax.mail.MessagingException. Probably TextHelper can be deprecated and moved to axiom-compat.
5. DataSourceUtils#getSize(DataSource) recognizes javax.mail.util.ByteArrayDataSource. The code should be changed to use reflection so that it works if JavaMail is not present.