package com.baidu.dsp.common.utils.email;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import com.baidu.disconf.web.config.ApplicationPropertyConfig;
/**
* 邮件发送公共类
*
* @author modi
* @version 1.0.0
*/
@Service
public class MailBean implements InitializingBean {
protected static final Logger LOG = LoggerFactory.getLogger(MailBean.class);
@Autowired
private ApplicationPropertyConfig emailProperties;
// mail sender
private JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
/**
* 发送html邮件
*
* @throws MessagingException
* @throws AddressException
*/
public void sendHtmlMail(String from, String[] to, String title, String text)
throws AddressException, MessagingException {
long start = System.currentTimeMillis();
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "GBK");
InternetAddress[] toArray = new InternetAddress[to.length];
for (int i = 0; i < to.length; i++) {
toArray[i] = new InternetAddress(to[i]);
}
messageHelper.setFrom(new InternetAddress(from));
messageHelper.setTo(toArray);
messageHelper.setSubject(title);
messageHelper.setText(text, true);
mimeMessage = messageHelper.getMimeMessage();
mailSender.send(mimeMessage);
long end = System.currentTimeMillis();
LOG.info("send mail start:" + start + " end :" + end);
}
/**
* 设置邮箱host,用户名和密码
*/
@Override
public void afterPropertiesSet() throws Exception {
mailSender.setHost(emailProperties.getEmailHost());
if (!StringUtils.isEmpty(emailProperties.getEmailUser())) {
mailSender.setUsername(emailProperties.getEmailUser());
}
if (!StringUtils.isEmpty(emailProperties.getEmailPassword())) {
mailSender.setPassword(emailProperties.getEmailPassword());
}
if (!StringUtils.isEmpty(emailProperties.getEmailPort())) {
try {
Integer port = Integer.parseInt(emailProperties.getEmailPort());
mailSender.setPort(port);
} catch (Exception e) {
LOG.error(e.toString());
}
}
}
}