package com.nanometer.smartlab.util; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.exception.ExceptionEnumCode; import org.apache.log4j.Logger; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.text.MessageFormat; import java.util.Date; import java.util.Properties; public class EmailSend { private static Logger logger = Logger.getLogger(EmailSend.class); public static void send(String to, String applyCode) { Transport transport = null; try { EmailConfigService cs = SpringUtil.getBean("emailConfigService", EmailConfigService.class); String smtp = cs.getSmtpHost(); String user = cs.getSmtpUser(); String password = cs.getSmtpPwd(); String from = cs.getSmtpFrom(); String subject = cs.getSmtpSubject(); String content = MessageFormat.format(cs.getSmtpContent(), applyCode); Properties props = new Properties(); props.put("mail.smtp.host", smtp); props.put("mail.smtp.auth", "true"); Session ssn = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, password); } }); // 由邮件会话新建一个消息对象 MimeMessage message = new MimeMessage(ssn); // 发件人的邮件地址 InternetAddress fromAddress = new InternetAddress(from); // 设置发件人 message.setFrom(fromAddress); // 收件人的邮件地址 InternetAddress toAddress = new InternetAddress(to); // 设置收件人 message.addRecipient(Message.RecipientType.TO, toAddress); // 设置标题 message.setSubject(subject); // 设置内容 message.setText(content); // 设置发信时间 message.setSentDate(new Date()); transport = ssn.getTransport("smtp"); transport.connect(smtp, user, password); transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO)); } catch (Exception ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.MAIL_SEND_FAIL, "邮件发送失败。", ex); } finally { if (transport != null) { try { transport.close(); } catch (Exception ex) { } } } } }