package com.xiongyingqi.email;
import com.xiongyingqi.email.vo.EmailAccount;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import java.util.Properties;
/**
* Created by 瑛琪<a href="http://xiongyingqi.com">xiongyingqi.com</a> on 2014/8/6 0006.
*/
//@Component(value = "javaMailSender")
public class JavaMailSenderFactory extends JavaMailSenderImpl {
/**
* 系统邮件帐号
*/
private String systemEmail;
/**
* 邮件默认抄送人
*/
private String defaultCc;
/**
* 邮件默认密送人
*/
private String defaultBcc;
private EmailAccount emailAccount;
private JavaMailSenderFactory(EmailAccount emailAccount) {
this.emailAccount = emailAccount;
this.systemEmail = emailAccount.getSystemEmail();
this.defaultCc = emailAccount.getCc();
this.defaultBcc = emailAccount.getBcc();
super.setProtocol(emailAccount.getProtocol());
super.setHost(emailAccount.getHost());
super.setPort(emailAccount.getPort());
super.setUsername(emailAccount.getUsername());
super.setPassword(emailAccount.getPassword());
Properties properties = new Properties();
properties.setProperty("mail." + emailAccount.getProtocol() + ".auth", emailAccount.isAuth() + "");
super.setJavaMailProperties(properties);
// <property name="protocol" value="${email.protocol}"></property>
// <property name="host" value="${email.host}"></property>
// <property name="port" value="${email.port}"></property>
// <property name="username" value="${email.username}"></property>
// <property name="password" value="${email.password}"></property>
// <property name="javaMailProperties">
// <props>
// <prop key="mail.${email.protocol}.auth">${email.auth}</prop>
// </props>
// </property>
}
public static JavaMailSenderFactory buildNewJavaMailSender(EmailAccount emailAccount) {
return new JavaMailSenderFactory(emailAccount);
}
public String getSystemEmail() {
return systemEmail;
}
public void setSystemEmail(String systemEmail) {
this.systemEmail = systemEmail;
}
public String getDefaultCc() {
return defaultCc;
}
public void setDefaultCc(String defaultCc) {
this.defaultCc = defaultCc;
}
public String getDefaultBcc() {
return defaultBcc;
}
public void setDefaultBcc(String defaultBcc) {
this.defaultBcc = defaultBcc;
}
public EmailAccount getEmailAccount() {
return emailAccount;
}
public void setEmailAccount(EmailAccount emailAccount) {
this.emailAccount = emailAccount;
}
}