v9.3.0
Simple Java Mail 9.3.0 exposes batch-module as a supported standalone Jakarta Mail orchestration API.
- #698 adds
BatchTransportExecutor<K>for applications that create their ownSessionandMimeMessageobjects without adoptingEmailBuilderorMailer. The mainsimple-java-mailfacade is not required. - Register Sessions by cluster key, then run cluster-selected or exact-Session callbacks synchronously or submit them as
CompletableFuturework. Each callback receives the actually selectedSessionand connectedTransport. - The facade keeps raw leases private, releases connections after successful callbacks, invalidates them after escaping failures, resolves OAuth2 credentials from the selected Session, and provides deterministic graceful or forced shutdown. Its default executor is module-owned; an injected executor remains caller-owned.
- The existing pooled
Mailerpath and the standalone facade now share one transport engine.smtp-connection-poolremains the only physical pool owner; do not stack batch/direct orchestration over the Jakartasmtppoolprovider. - The supporting chain is updated to
smtp-connection-pool 4.0.1,clustered-object-pool 4.0.3, andgeneric-object-pool 2.4.2. The published JPMS names areorg.simplejavamail.batch,org.simplejavamail.smtpconnectionpool,org.bbottema.clusteredobjectpool, andorg.bbottema.genericobjectpool.
See the SMTP connection pooling and batch orchestration guide for the comparison matrix, ownership rules, and complete examples.