OghamJavaxMailConfiguration.java
package fr.sii.ogham.spring.email;
import fr.sii.ogham.email.sender.impl.JavaxMailSender;
import fr.sii.ogham.spring.email.condition.JavaxActivationDataHandlersAvailable;
import fr.sii.ogham.spring.email.condition.JavaxMailServiceProvidersAvailable;
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
javax.mail.internet.MimeMessage.class,
javax.mail.Session.class,
// import hard coded in Session
com.sun.mail.util.MailLogger.class,
// need activation api
javax.activation.MimeType.class,
javax.activation.DataHandler.class,
// need ogham sender
JavaxMailSender.class
})
// also need implementation but relies on ServiceLoader
// also check that it is consistent and that mail could be sent
@Conditional({
JavaxMailServiceProvidersAvailable.class,
JavaxActivationDataHandlersAvailable.class
})
@EnableConfigurationProperties(OghamJavaMailProperties.class)
@AutoConfigureAfter(MailSenderAutoConfiguration.class)
public class OghamJavaxMailConfiguration {
@Bean
@ConditionalOnMissingBean(SpringMailJavaxConfigurer.class)
public SpringMailJavaxConfigurer springMailJavaxConfigurer(
@Autowired(required=false) OghamJavaMailProperties properties,
@Autowired(required=false) MailProperties springProperties) {
return new SpringMailJavaxConfigurer(properties, springProperties);
}
}