diff --git a/common/src/main/java/stirling/software/common/util/EmlToPdf.java b/common/src/main/java/stirling/software/common/util/EmlToPdf.java index 03a47a734..4b52f7e88 100644 --- a/common/src/main/java/stirling/software/common/util/EmlToPdf.java +++ b/common/src/main/java/stirling/software/common/util/EmlToPdf.java @@ -95,23 +95,26 @@ public class EmlToPdf { private static boolean isJakartaMailAvailable() { if (jakartaMailAvailable == null) { try { + // Check for core Jakarta Mail classes Class.forName("jakarta.mail.internet.MimeMessage"); Class.forName("jakarta.mail.Session"); - - // Additional check to ensure we have the implementation, not just the API - Class.forName("com.sun.mail.smtp.SMTPTransport"); + Class.forName("jakarta.mail.internet.MimeUtility"); + Class.forName("jakarta.mail.internet.MimePart"); + Class.forName("jakarta.mail.internet.MimeMultipart"); + Class.forName("jakarta.mail.Multipart"); + Class.forName("jakarta.mail.Part"); jakartaMailAvailable = true; log.debug("Jakarta Mail libraries are available"); } catch (ClassNotFoundException e) { - // In Docker/production environments, - // if we detect we're in a containerized environment + // In Docker/production environments, if we detect we're in a containerized + // environment String dockerEnv = System.getenv("DOCKER_ENABLE_SECURITY"); String disableFeatures = System.getenv("DISABLE_ADDITIONAL_FEATURES"); if (dockerEnv != null || disableFeatures != null) { - log.warn( - "Jakarta Mail not found but in Docker environment - forcing availability"); + jakartaMailAvailable = false; + log.warn("Jakarta Mail not found but in Docker environment"); } else { jakartaMailAvailable = false; log.debug("Jakarta Mail libraries are not available, using basic parsing"); @@ -302,7 +305,7 @@ public class EmlToPdf { html.append("