package com.ibm.sbt.services.client.email;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
public class MailSessionFactory {
private String auth;
private String mailSmtpHost;
private Boolean mailSmtpAuth = false;
private String mailUser;
private String mailPassword;
private String mailFrom;
private Boolean mailDebug;
private transient Session instance;
public void setAuth(String auth) {
// unused, tomcat specific setting?
this.auth = auth;
}
public void setMailSmtpHost(String mailSmtpHost) {
this.mailSmtpHost = mailSmtpHost;
}
public void setMailSmtpAuth(Boolean mailSmtpAuth) {
this.mailSmtpAuth = mailSmtpAuth;
}
public void setMailUser(String mailUser) {
this.mailUser = mailUser;
}
public void setMailPassword(String pmailPassword) {
this.mailPassword = pmailPassword;
}
public void setMailFrom(String mailFrom) {
this.mailFrom = mailFrom;
}
public void setMailDebug(Boolean mailDebug) {
this.mailDebug = mailDebug;
}
private Properties getProperties() {
Properties prop = new Properties();
// we may want this to be configurable
prop.put("mail.transport.protocol", "smtp");
prop.put("mail.smtp.host", mailSmtpHost);
prop.put("mail.user", mailUser);
prop.put("mail.smtp.user", mailUser);
return prop;
}
protected String isAuthRequired() {
return auth;
}
protected String getMailFrom() {
return mailFrom;
}
protected Boolean isDebugEnabled() {
return mailDebug;
}
public synchronized Session getInstance() {
if (instance != null) {
return instance;
}
Authenticator authenticator = null;
if (mailSmtpAuth) {
final PasswordAuthentication pauth = new PasswordAuthentication(mailUser, mailPassword);
authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return pauth;
}
};
}
this.instance = Session.getInstance(getProperties(), authenticator);
return instance;
}
}