fix: enhance Jakarta Mail availability check for containerized environments

This commit is contained in:
Balázs Szücs 2025-06-18 23:48:39 +02:00
parent 218826645a
commit f916832c7b

View File

@ -40,6 +40,7 @@ import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import stirling.software.common.model.api.converters.EmlToPdfRequest; import stirling.software.common.model.api.converters.EmlToPdfRequest;
@Slf4j @Slf4j
@ -96,11 +97,25 @@ public class EmlToPdf {
try { try {
Class.forName("jakarta.mail.internet.MimeMessage"); Class.forName("jakarta.mail.internet.MimeMessage");
Class.forName("jakarta.mail.Session"); Class.forName("jakarta.mail.Session");
// Additional check to ensure we have the implementation, not just the API
Class.forName("com.sun.mail.smtp.SMTPTransport");
jakartaMailAvailable = true; jakartaMailAvailable = true;
log.debug("Jakarta Mail libraries are available"); log.debug("Jakarta Mail libraries are available");
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
jakartaMailAvailable = false; // In Docker/production environments,
log.debug("Jakarta Mail libraries are not available, using basic parsing"); // 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");
} else {
jakartaMailAvailable = false;
log.debug("Jakarta Mail libraries are not available, using basic parsing");
}
} }
} }
return jakartaMailAvailable; return jakartaMailAvailable;