package com.porterhead.configuration;
import com.porterhead.mail.MailSenderService;
import com.porterhead.mail.MailSenderServiceImpl;
import org.apache.velocity.app.VelocityEngine;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import java.util.Properties;
/**
* @version 1.0
* @author: Iain Porter
* @since 14/05/2013
*/
@Configuration
@Profile({"production"})
public class MailServiceConfiguration {
@Value("${email.services.sender.host}")
private String mailSenderHost;
@Value("${email.services.sender.port}")
private int mailSenderPort;
@Value("${email.services.sender.username}")
private String mailSenderUsername;
@Value("${email.services.sender.password}")
private String mailSenderPassword;
@Bean
VelocityEngine velocityEngine() {
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.setProperty("resource.loader", "class");
velocityEngine.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
return velocityEngine;
}
@Bean()
JavaMailSender mailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(mailSenderHost);
mailSender.setPort(mailSenderPort);
mailSender.setUsername(mailSenderUsername);
mailSender.setPassword(mailSenderPassword);
Properties javaMailProperties = new Properties();
javaMailProperties.setProperty("mail.debug", "false");
javaMailProperties.setProperty("mail.smtp.auth", "true");
javaMailProperties.setProperty("mail.smtp.starttls.enable", "true");
mailSender.setJavaMailProperties(javaMailProperties);
return mailSender;
}
@Bean
MailSenderService mailSenderService() {
return new MailSenderServiceImpl(mailSender(), velocityEngine());
}
}