OghamJavaMailConfiguration.java
package fr.sii.ogham.spring.email;
import fr.sii.ogham.email.sender.impl.JavaMailSender;
import fr.sii.ogham.spring.email.condition.JakartaActivationDataHandlersAvailable;
import fr.sii.ogham.spring.email.condition.JakartaMailServiceProvidersAvailable;
import jakarta.activation.DataHandler;
import jakarta.activation.MimeType;
import jakarta.mail.Session;
import jakarta.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.mail.MailProperties;
import org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConditionalOnClass({
// need mail api
MimeMessage.class,
Session.class,
// need activation api
MimeType.class,
DataHandler.class,
// need ogham sender
JavaMailSender.class,
})
// also need implementation but relies on ServiceLoader
// also check that it is consistent and that mail could be sent
@Conditional({
JakartaMailServiceProvidersAvailable.class,
JakartaActivationDataHandlersAvailable.class
})
@EnableConfigurationProperties(OghamJavaMailProperties.class)
@AutoConfigureAfter(MailSenderAutoConfiguration.class)
public class OghamJavaMailConfiguration {
@Bean
@ConditionalOnMissingBean(SpringMailConfigurer.class)
public SpringMailConfigurer springMailConfigurer(
@Autowired(required=false) OghamJavaMailProperties properties,
@Autowired(required=false) MailProperties springProperties) {
return new SpringMailConfigurer(properties, springProperties);
}
}