/* * Created on 29/09/2005 * * * Window - Preferences - Java - Code Style - Code Templates */ package br.com.centralit.citcorpore.mail; import java.util.Date; import java.util.Properties; import javax.activation.CommandMap; import javax.activation.MailcapCommandMap; 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 javax.mail.internet.MimeUtility; import org.apache.commons.lang.StringEscapeUtils; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.ParametroUtil; /** * @author rogerio * * Window - Preferences - Java - Code Style - Code Templates */ public class ControleEmail implements Runnable { private String username; private String password; private String auth; private String servidorSMTP; private String porta; private String starttls; private MensagemEmail mensagem; public ControleEmail(MensagemEmail mensagem) throws Exception { this.username = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailUsuario, ""); this.password = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailSenha, ""); if (ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailAutenticacao, "N").equalsIgnoreCase("S")) { this.auth = "true"; } else { this.auth = "false"; } this.servidorSMTP = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailSMTP, ""); this.porta = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.SMTP_LEITURA_Porta, "587"); if (ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailStartTLS, "N").equalsIgnoreCase("S")) { this.starttls = "true"; } else { this.starttls = "false"; } this.mensagem = mensagem; } public void send(String to, String cc, String bcc, String from, String subject, String text) throws Exception { mensagem = new MensagemEmail(to, cc, bcc, from, subject, text); this.send(); return; } public void send(String to, String cc, String bcc, String from, String subject, String text, boolean confirmarLeituraMail) throws Exception { mensagem = new MensagemEmail(to, cc, bcc, from, subject, text); mensagem.setConfirmarLeituraMail(confirmarLeituraMail); this.send(); return; } public void send() throws Exception { try { Properties mailProps=new Properties(); mailProps.put("mail.smtp.auth", this.auth); mailProps.put("mail.smtp.host", this.servidorSMTP); mailProps.put("mail.smtp.port", this.porta); mailProps.put("mail.smtp.starttls.enable", this.starttls); /** * Motivo: Altera��o para resolu��o de incidente. Se n�o exige autentica��o pelo parametro ent�o o mesmo n�o ser� atribuido * Autor: flavio.santana * Data/Hora: 02/12/2013 */ Session mailSession = null; if (ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailAutenticacao, "N").equalsIgnoreCase("S")) { mailSession = Session.getInstance(mailProps, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); } else { mailSession = Session.getInstance(mailProps); } mailSession.setDebug(false); Message email = new MimeMessage(mailSession); email.setFrom(new InternetAddress(mensagem.getFrom())); email.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mensagem.getTo())); if (mensagem.getCc() != null && mensagem.getCc().trim().length() > 0) { email.setRecipients(Message.RecipientType.CC, InternetAddress.parse(mensagem.getCc())); } if (mensagem.getCco() != null && mensagem.getCco().trim().length() > 0) { email.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(mensagem.getCco())); } email.setSubject(MimeUtility.encodeText(mensagem.getSubject(), "ISO-8859-1", "B")); try { email.setSentDate(new Date()); } catch (Exception e) { System.out.println("ERRO AO SETAR A DATA EM Message email = new MimeMessage(mailSession)"); e.printStackTrace(); } MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); CommandMap.setDefaultCommandMap(mc); email.setContent((StringEscapeUtils.unescapeHtml(mensagem.getText())), "text/html; charset=ISO-8859-1;"); // Adicionar header para pedir confirmacao de leitura if (mensagem.isConfirmarLeituraMail()) { email.addHeader("Disposition-Notification-To", mensagem.getFrom()); } Transport.send(email); } catch (Exception e) { System.out.println("PROBLEMAS AO ENVIAR EMAIL! "); System.out.println("[E]ERROR: " + e); //e.printStackTrace(System.out); //throw e; } return; } /* Codigo antigo * public void send() throws Exception { if (USE_MAIL) { try { Properties mailProps = new Properties(); mailProps.put("mail.smtp.host", ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailSMTP, null)); mailProps.put("mail.transport.protocol", "smtp"); Autenticador auth; Session mailSession; if (!NEED_AUTH) { // N�o ha necessidade de autenticacao mailProps.put("mail.smtp.auth", "false"); mailSession = Session.getInstance(mailProps); } else { ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailAutenticacao, "N").equalsIgnoreCase("S"); // caso haja necessidade de autenticacao auth = new Autenticador(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailUsuario, null), ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EmailSenha, null)); mailProps.put("mail.smtp.auth", "true"); mailProps.put("mail.smtp.submitter", auth.username); mailProps.put("mail.user", auth.username); mailProps.put("mail.pwd", auth.password); mailProps.put("mail.password", auth.password); mailProps.put("mail.from", mensagem.getFrom()); mailProps.put("mail.to", mensagem.getTo()); String parametroGmail = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.SMTP_GMAIL, "N"); if (parametroGmail != null && !StringUtils.isEmpty(parametroGmail) && StringUtils.contains(parametroGmail, "S")) { mailProps.put("mail.smtp.starttls.enable", "true"); mailProps.put("mail.smtp.socketFactory.port", (ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.SMTP_LEITURA_Porta, "465"))); mailProps.put("mail.smtp.socketFactory.fallback", "false"); mailProps.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); } mailSession = Session.getInstance(mailProps, auth); } mailSession.setDebug(false); Message email = new MimeMessage(mailSession); email.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mensagem.getTo())); if (mensagem.getCc() != null && mensagem.getCc().trim().length() > 0) { email.setRecipients(Message.RecipientType.CC, InternetAddress.parse(mensagem.getCc())); } if (mensagem.getCco() != null && mensagem.getCco().trim().length() > 0) { email.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(mensagem.getCco())); } email.setFrom(new InternetAddress(mensagem.getFrom())); email.setSubject(MimeUtility.encodeText(mensagem.getSubject(), "ISO-8859-1", "B")); try { email.setSentDate(new Date()); } catch (Exception e) { System.out.println("ERRO AO SETAR A DATA EM Message email = new MimeMessage(mailSession)"); e.printStackTrace(); } // email.setContent(msg.getText(), "text/html; charset=" + // System.getProperty("file.encoding") + ";"); email.setContent(Util.encodeHTML(mensagem.getText()), "text/html; charset=ISO-8859-1;"); if (mensagem.isConfirmarLeituraMail()) { // Adiciona header para // pedir confirmacao de // leitura email.addHeader("Disposition-Notification-To", mensagem.getFrom()); } // Transport transport = mailSession.getTransport(); Transport.send(email); //transport.connect(); transport.sendMessage(email, email.getRecipients(Message.RecipientType.TO)); transport.close(); } catch (Exception e) { System.out.println("PROBLEMAS AO ENVIAR EMAIL! "); System.out.println("[E]ERROR: " + e); e.printStackTrace(System.out); throw e; } // System.out.println(" [#] Email enviado"); return; } }*/ @Override public void run() { try { send(); } catch (Exception e) { e.printStackTrace(); } } }