package br.gov.mc.cadsei.util; import java.util.ArrayList; import java.util.List; import java.util.Properties; import javax.mail.Address; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SimpleMail { private String text; private String subject; private String from; private String password; private Boolean html; private String host; private String smtpServer; private String smtpPort; private String user; private String port; private String replyTo; private String socksProxyHost; private String socksProxyPort; private String smtpTimeout; private List
to; private List
cc; public SimpleMail() { this.setTo(new ArrayList
()); this.setCc(new ArrayList
()); } public void enviarEmail() throws Exception { Properties props = new Properties(); props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.host", smtpServer); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); if (port != null || port.length() > 0) { props.put("mail.smtp.port", port); } props.put("mail.smtp.auth", getPassword() == null ? "false" : "true"); if (socksProxyHost != null && !socksProxyHost.equals("")) { props.setProperty("socksProxyHost", socksProxyHost); props.setProperty("socksProxyPort", socksProxyPort); } if (smtpTimeout != null && !smtpTimeout.equals("")) { props.setProperty("mail.smtp.connectiontimeout",smtpTimeout); props.setProperty("mail.smtp.timeout", smtpTimeout); } Authenticator auth = new SMTPAuthenticator(); Session mailSession = Session.getDefaultInstance(props, auth); Transport transport = mailSession.getTransport(); MimeMessage message = new MimeMessage(mailSession); message.setContent(text, (getHtml() ? "text/html" : "text/plain")); message.setSubject(subject); message.setFrom(new InternetAddress(from)); // Forçando REPLY TO if (getReplyTo() != null && !"".equals(getReplyTo().trim())) { ArrayList
replys = new ArrayList
(); replys.add(new InternetAddress(getReplyTo())); InternetAddress[] tempReply = new InternetAddress[1]; replys.toArray(tempReply); message.setReplyTo(tempReply); } InternetAddress[] tempArray = new InternetAddress[to.size()]; getTo().toArray(tempArray); message.addRecipients(Message.RecipientType.TO, tempArray); if (cc != null) { tempArray = new InternetAddress[cc.size()]; cc.toArray(tempArray); cc = null; message.addRecipients(Message.RecipientType.CC, tempArray); } System.out.println("# Conectando ao servidor: " + smtpServer); System.out.println("# Usuario......: " + user); transport.connect(); System.out.println("# Conecção bem sucedida."); System.out.println("# Enviado o email para :" + to.toString()); transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO)); System.out.println("# Mensagem enviada com sucesso."); transport.close(); } public void addCC() { } public void addTO(String addr) throws AddressException { getTo().add(new InternetAddress(addr)); } public void addCC(String addr) throws AddressException { getCc().add(new InternetAddress(addr)); } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public boolean isHtml() { return getHtml(); } public void setHtml(boolean html) { this.html = html; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getSmtpServer() { return smtpServer; } public void setSmtpServer(String smtpServer) { this.smtpServer = smtpServer; } public String getSmtpPort() { return smtpPort; } public void setSmtpPort(String smtpPort) { this.smtpPort = smtpPort; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Boolean getHtml() { return html; } public void setHtml(Boolean html) { this.html = html; } public List
getTo() { return to; } public void setTo(List
to) { this.to = to; } public List
getCc() { return cc; } public void setCc(List
cc) { this.cc = cc; } public String getReplyTo() { return replyTo; } public void setReplyTo(String replyTo) { this.replyTo = replyTo; } private class SMTPAuthenticator extends javax.mail.Authenticator { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, getPassword()); } } public String getPort() { return port; } public void setPort(String port) { this.port = port; } public String getSocksProxyPort() { return socksProxyPort; } public String getSocksProxyHost() { return socksProxyHost; } public void setSocksProxyHost(String socksProxyHost) { this.socksProxyHost = socksProxyHost; } /** * @return the smtpTimeout */ public String getSmtpTimeout() { return smtpTimeout; } /** * @param smtpTimeout the smtpTimeout to set */ public void setSmtpTimeout(String smtpTimeout) { this.smtpTimeout = smtpTimeout; } public void setSocksProxyPort(String socksProxyPort) { this.socksProxyPort = socksProxyPort; } }