/* * Created on 29/09/2005 * * * Window - Preferences - Java - Code Style - Code Templates */ package br.com.citframework.mail; import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Part; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; import br.com.citframework.util.Constantes; /** * @author rogerio * * * Window - Preferences - Java - Code Style - Code Templates */ public class MailManager { private boolean NEED_AUTH = false; private boolean USE_MAIL = false; public MailManager() { NEED_AUTH = new Boolean(Constantes.getValue("NEED_AUTH")) .booleanValue(); NEED_AUTH = new Boolean(Constantes.getValue("NEED_AUTH")) .booleanValue(); USE_MAIL = new Boolean(Constantes.getValue("USE_MAIL")).booleanValue(); } public void send(String to, String cc, String bcc, String from, String subject, String text) throws Exception { MailMessage msg = new MailMessage(to, cc, bcc, from, subject, text); this.send(msg); return; } public void send(String to, String cc, String bcc, String from, String subject, String text, boolean confirmarLeituraMail) throws Exception { MailMessage msg = new MailMessage(to, cc, bcc, from, subject, text); msg.setConfirmarLeituraMail(confirmarLeituraMail); this.send(msg); return; } public void send(MailMessage msg) throws Exception { if (USE_MAIL) { try { Properties mailProps = new Properties(); mailProps .put("mail.smtp.host", Constantes.getValue("SRV_SMTP")); 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 { // caso haja necessidade de autenticacao auth = new Autenticador(Constantes.getValue("USER_MAIL"), Constantes.getValue("PWD_MAIL")); 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", msg.getFrom()); mailProps.put("mail.to", msg.getTo()); mailSession = Session.getInstance(mailProps, auth); } mailSession.setDebug(false); Message email = new MimeMessage(mailSession); email.setRecipients(Message.RecipientType.TO, InternetAddress.parse(msg.getTo())); if (msg.getCc() != null && msg.getCc().trim().length() > 0) { email.setRecipients(Message.RecipientType.CC, InternetAddress.parse(msg.getCc())); } if (msg.getCco() != null && msg.getCco().trim().length() > 0) { email.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(msg.getCco())); } email.setFrom(new InternetAddress(msg.getFrom())); email.setSubject(MimeUtility.encodeText(msg.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(msg.getText(), "text/html; charset=ISO-8859-1;"); if (msg.isConfirmarLeituraMail()) { // Adiciona header para // pedir confirmacao de // leitura email.addHeader("Disposition-Notification-To", msg.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! " + Constantes.getValue("SRV_SMTP") + " -> " + Constantes.getValue("NEED_AUTH") + " [" + Constantes.getValue("USER_MAIL") + "] - [" + Constantes.getValue("PWD_MAIL") + "]"); System.out.println("[E]ERROR: " + e); e.printStackTrace(System.out); throw e; } System.out.println(" [#] Email enviado"); return; } } protected Message prepareHeader(String from, String to, String cc, String bcc, String subject) throws IOException, AddressException, MessagingException { int i = 0; Properties props = new Properties(); props.put("mail.smtp.host", Constantes.getValue("SRV_SMTP")); props.put("mail.transport.protocol", "smtp"); Autenticador auth; Session session; if (!NEED_AUTH) { // N�o ha necessidade de autenticacao props.put("mail.smtp.auth", "false"); session = Session.getDefaultInstance(props, null); } else { // caso haja necessidade de autenticacao auth = new Autenticador(Constantes.getValue("USER_MAIL"), Constantes.getValue("PWD_MAIL")); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.submitter", auth.username); props.put("mail.user", auth.username); props.put("mail.pwd", auth.password); props.put("mail.password", auth.password); //props.put("mail.from", from); //props.put("mail.to", to); session = Session.getInstance(props, auth); } Message msg = new MimeMessage(session); InternetAddress addr; if (!to.trim().equalsIgnoreCase("")) { String[] auxTo = to.split(";"); if (auxTo.length <= 0) { addr = new InternetAddress(to); msg.addRecipients(Message.RecipientType.TO, new InternetAddress[] { addr }); } else { for (i = 0; i < auxTo.length; i++) { addr = new InternetAddress(auxTo[i]); msg.addRecipients(Message.RecipientType.TO, new InternetAddress[] { addr }); } } } if (cc != null && !cc.trim().equalsIgnoreCase("")) { String[] auxCC = cc.split(";"); if (auxCC.length <= 0) { addr = new InternetAddress(cc); msg.addRecipients(Message.RecipientType.CC, new InternetAddress[] { addr }); } else { for (i = 0; i < auxCC.length; i++) { addr = new InternetAddress(auxCC[i]); msg.addRecipients(Message.RecipientType.CC, new InternetAddress[] { addr }); } } } if (bcc != null && !bcc.trim().equalsIgnoreCase("")) { String[] auxBCC = cc.split(";"); if (auxBCC.length <= 0) { addr = new InternetAddress(bcc); msg.addRecipients(Message.RecipientType.BCC, new InternetAddress[] { addr }); } else { for (i = 0; i < auxBCC.length; i++) { addr = new InternetAddress(auxBCC[i]); msg.addRecipients(Message.RecipientType.BCC, new InternetAddress[] { addr }); } } } InternetAddress from_addr = new InternetAddress(from); msg.setFrom(from_addr); msg.setSubject(subject); return msg; } public void sendWithAttachments(String subject, String to, String cc, String bcc, String from, String message, Collection attach) throws IOException, AddressException, MessagingException { if (cc == null) cc = ""; if (bcc == null) bcc = ""; Message msg = prepareHeader(from, to, cc, bcc, subject); MimeMultipart mp = new MimeMultipart(); MimeBodyPart text = new MimeBodyPart(); text.setDisposition(Part.INLINE); text.setContent(message, "text/html"); mp.addBodyPart(text); Iterator itAux = attach.iterator(); while (itAux.hasNext()) { MimeBodyPart file_part = new MimeBodyPart(); File file = (File) itAux.next(); FileDataSource fds = new FileDataSource(file); DataHandler dh = new DataHandler(fds); file_part.setFileName(file.getName()); file_part.setDisposition(Part.ATTACHMENT); file_part.setDescription("Arquivo Anexado: " + file.getName()); file_part.setDataHandler(dh); mp.addBodyPart(file_part); } msg.setContent(mp); Transport.send(msg); } }