davidmoten / subethasmtp

SubEtha SMTP is a Java library for receiving SMTP mail
Other
149 stars 40 forks source link

Upgrade to Jakarta Mail 2.1 #96

Open rtaugerbeck opened 1 year ago

rtaugerbeck commented 1 year ago

Subethasmtp currently depends on 'com.sun.mail:jakarta.mail:2.0.1', while Jakarta EE 10 (https://jakarta.ee/release/10/) contains Jakarta Mail 2.1 specification.

Please upgrade to the Jakarta Mail 2.1 reference implementation:

<dependency>
    <groupId>org.eclipse.angus</groupId>
    <artifactId>angus-mail</artifactId>
    <version>1.0.0</version>
</dependency>

When mixing Subethasmtp and Angus Mail dependencies you potentially get Jakarta Activation runtime exceptions like:

java.lang.IllegalAccessError: failed to access class com.sun.activation.registries.LogSupport from class jakarta.activation.MailcapCommandMap (com.sun.activation.registries.LogSupport and jakarta.activation.MailcapCommandMap are in unnamed module of loader 'app')

    at jakarta.activation.MailcapCommandMap.<init>(MailcapCommandMap.java:149)
    at jakarta.activation.CommandMap.getDefaultCommandMap(CommandMap.java:55)
    at jakarta.activation.DataHandler.getCommandMap(DataHandler.java:127)
    at jakarta.activation.DataHandler.getDataContentHandler(DataHandler.java:589)
    at jakarta.activation.DataHandler.writeTo(DataHandler.java:289)
    ...

Thanks

davidmoten commented 1 year ago

Thanks, I'll have a look.

trawat commented 9 months ago

@davidmoten , any dev on this? We are using old fork and in process on migrating to JDK17.

And, we are now stuck with this exact same issue. Please, let us know if we have any timeline for this change.

@rtaugerbeck did you find any work around for this ?

davidmoten commented 9 months ago

Sounds fair enough. I'll make it happen.

rtaugerbeck commented 9 months ago

It might just be a plugin-in dependency version upgrade. At least this worked for my simple use case. I just excluded com.sun.mail:jakarta.mail from subethasmtp's dependencies via Maven dependency exclusion rule and used angus-mail as runtime dependency, instead. I was not sure about side effects, that's why I did not create a pull request, yet.

davidmoten commented 9 months ago

Actually that's what I want to know. If exclusion of other mail and addition of Angus mail using maven works for you then I prefer that option for the moment. Can be documented in README.md though.