package com.insoul.copartner.util.mail; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class MailSender { private Session session; private Properties javaMailProperties = new Properties(); private String fromAddress; private String username; private String password; private String nickname; private boolean isValidateAuth = true; public boolean send(final String subject, final String content, final String[] mailTo) { try { Message mailMessage = new MimeMessage(getSession()); try { String nick = javax.mail.internet.MimeUtility.encodeText(this.getNickname()); mailMessage.setFrom(new InternetAddress(this.getFromAddress(), nick)); } catch (Exception e) { mailMessage.setFrom(new InternetAddress(this.getFromAddress())); } for (int i = 0; i < mailTo.length; i++) { mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo[i])); } mailMessage.setSubject(subject); mailMessage.setSentDate(new Date()); Multipart mainPart = new MimeMultipart(); BodyPart html = new MimeBodyPart(); html.setContent(content, "text/html; charset=UTF-8"); mainPart.addBodyPart(html); mailMessage.setContent(mainPart); Transport.send(mailMessage); return true; } catch (MessagingException ex) { ex.printStackTrace(); } return false; } public Authenticator getAuthenticator() { Authenticator authenticator = null; if (this.isValidateAuth()) { authenticator = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(getUsername(), getPassword()); } }; } return authenticator; } public synchronized Session getSession() { if (this.session == null) { this.session = Session.getDefaultInstance(this.javaMailProperties, getAuthenticator()); } return this.session; } public Properties getJavaMailProperties() { return javaMailProperties; } public void setJavaMailProperties(Properties javaMailProperties) { this.javaMailProperties = javaMailProperties; synchronized (this) { this.session = null; } } public String getFromAddress() { return fromAddress; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public boolean isValidateAuth() { return isValidateAuth; } public void setValidateAuth(boolean isValidateAuth) { this.isValidateAuth = isValidateAuth; } }