Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.com.ec.shared;

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.mail.Message;
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.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;

import br.com.ec.core.util.ArquivoUtil;
import br.com.ec.core.util.PropertiesUtil;
import br.com.ec.core.util.VerificadorUtil;

public class EmailComponente {

        private MimeMessage email;
        private Multipart conteudo = new MimeMultipart();
       
        public EmailComponente() {
                try {
                        PropertiesUtil propertiesUtil = new PropertiesUtil("/email/email.properties");
                        String hostname = propertiesUtil.retornarPropriedadeDoArquivo("email.hostname");
                        String porta = propertiesUtil.retornarPropriedadeDoArquivo("email.porta");
                        final String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo("email.emailorigem");
                        final String senha = propertiesUtil.retornarPropriedadeDoArquivo( "email.senha");
                       
                        Properties propriedades = new Properties();
                        propriedades.put("mail.smtp.host", hostname);
                        propriedades.put("mail.smtp.auth", "true");
                        propriedades.put("mail.smtp.port", porta);
                       
                        email = new MimeMessage(Session.getDefaultInstance(propriedades, new javax.mail.Authenticator() {
                                        protected PasswordAuthentication getPasswordAuthentication() {
                                                return new PasswordAuthentication(emailOrigem, senha);
                                        }
                                }));
                        this.comEmailOrigem(emailOrigem);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
       
        public EmailComponente comSessao(Session sessao) {
                email = new MimeMessage(sessao);
                return this;
        }
       
        public EmailComponente comDataEnvio(Date dataEnvio) {
                try {
                        email.setSentDate(dataEnvio);
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return this;
        }
       
        public EmailComponente comEmailOrigem(String emailOrigem) {
                try {
                        email.setFrom(new InternetAddress(emailOrigem));
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return this;
        }
       
        public EmailComponente comEmailDestino(String emailDestino) {
                try {
                        email.setRecipient(RecipientType.TO, new InternetAddress(emailDestino));
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return this;
        }
       
        public EmailComponente comEmailsDestino(String emailsDestino) {
                try {
                        email.setRecipients(RecipientType.TO, InternetAddress.parse(emailsDestino));
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return this;
        }
       
        public EmailComponente comAssunto(String assunto) {
                try {
                        email.setSubject(assunto);
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return this;
        }
       
        public EmailComponente comConteudo(String corpo) {
                try {
                        conteudo = null;
                        email.setText(corpo);
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return this;
        }
       
        public EmailComponente comConteudoHtml(String corpo) {
                try {
                        MimeBodyPart corpoHTML = new MimeBodyPart();
                        corpoHTML.setContent(corpo,"text/html; charset=UTF-8");
                        conteudo.addBodyPart(corpoHTML);
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return this;
        }
       
        public EmailComponente adicionarAnexo(String legendaArquivo, byte[] arquivoEmBytes, String contentTypeArquivo) {
                try {
                        if (VerificadorUtil.estaNulo(conteudo)) {
                                conteudo = new MimeMultipart();
                        }
                        ByteArrayDataSource dataSource = new ByteArrayDataSource(arquivoEmBytes, ArquivoUtil.retornarContentTypeArquivo(contentTypeArquivo));
                        MimeBodyPart anexo = new MimeBodyPart();  
                        anexo.setDataHandler(new DataHandler(dataSource));
                        anexo.setFileName(legendaArquivo);
                        conteudo.addBodyPart(anexo);
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return this;
        }
       
        public final MimeMessage build() {
                try {
                        if (VerificadorUtil.naoEstaNulo(conteudo)) {
                                email.setContent(conteudo);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return email;
        }
       
        public final void enviar() {
                try {
                        Message message = new MimeMessage(this.build());
                        Transport.send(message);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
       
        /*
        private static final String NOME_PROPRIEDADE_EMAIL_EMAILORIGEM = "email.emailorigem";
        private static final String NOME_PROPRIEDADE_EMAIL_SENHA = "email.senha";
        private static final String NOME_PROPRIEDADE_EMAIL_USUARIO = "email.usuario";
        private static final String NOME_PROPRIEDADE_EMAIL_PORTA = "email.porta";
        private static final String NOME_PROPRIEDADE_EMAIL_HOSTNAME = "email.hostname";
        private static final String NOME_ARQUIVO_EMAIL_PROPERTY = "/email/email.properties";
       
        private String assunto;
        private String conteudo;
        private String destinatarios;
       
        private String nomeArquivo;
        private byte[] arquivoAnexo;
        private String contentTypeAnexo;
       
        private static final String EMAIL_FROM = "sistema@espacocase.net";
        private static final String EMAIL_PASS = "espaco10";
       
        public String getAssunto() {return assunto;}
        public void setAssunto(String assunto) {this.assunto = assunto;}
       
        public String getConteudo() {return conteudo;}
        public void setConteudo(String conteudo) {this.conteudo = conteudo;}
       
        public String getDestinatarios() {return destinatarios;}
        public void setDestinatarios(String destinatarios) {this.destinatarios = destinatarios;}

        public String getNomeArquivo() {return nomeArquivo;}
        public void setNomeArquivo(String nomeArquivo) {this.nomeArquivo = nomeArquivo;}
       
        public byte[] getArquivoAnexo() {return arquivoAnexo;}
        public void setArquivoAnexo(byte[] arquivoAnexo) {this.arquivoAnexo = arquivoAnexo;}
       
        public String getContentTypeAnexo() {return contentTypeAnexo;}
        public void setContentTypeAnexo(String contentTypeAnexo) {this.contentTypeAnexo = contentTypeAnexo;}
       
        private Session configurandoEmail() {
                try {
                        PropertiesUtil propertiesUtil = new PropertiesUtil(NOME_ARQUIVO_EMAIL_PROPERTY);
                        String hostname = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_HOSTNAME);
                        String porta = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_PORTA);
                        final String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_EMAILORIGEM);
                        final String senha = propertiesUtil.retornarPropriedadeDoArquivo( NOME_PROPRIEDADE_EMAIL_SENHA);
                       
                        Properties props = new Properties();
                        props.put("mail.smtp.host", hostname);
                    props.put("mail.smtp.auth", "true");
                    props.put("mail.smtp.port", porta);
                   
                    System.out.println(emailOrigem + "s");
                    System.out.println(emailOrigem.equals(EMAIL_FROM));
                    System.out.println(senha.equals(EMAIL_PASS));
                       
                    Session sessao = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
                        protected PasswordAuthentication getPasswordAuthentication() {
                                return new PasswordAuthentication(emailOrigem, senha);
                        }
                    });
        //          sessao.setDebug(true);
                    return sessao;
                } catch (IOException e) {
                        e.printStackTrace();
                }
                return null;
        }
       
        public void enviarEmail() {
                try {
                        PropertiesUtil propertiesUtil = new PropertiesUtil(NOME_ARQUIVO_EMAIL_PROPERTY);
                        String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_EMAILORIGEM);
                       
                Message message = new MimeMessage(configurandoEmail());
                message.setFrom(new InternetAddress(emailOrigem));
               
                Address[] emailsParaEnvio = InternetAddress.parse(destinatarios);
                message.setRecipients(Message.RecipientType.TO, emailsParaEnvio);
                message.setSubject(getAssunto());
                message.setText(getConteudo());
               
                if (VerificadorUtil.naoEstaNuloOuVazio(getArquivoAnexo())) {
                        Multipart conteudo = new MimeMultipart();
                        ByteArrayDataSource dataSource = new ByteArrayDataSource(getArquivoAnexo(), ArquivoUtil.retornarContentTypeArquivo(getContentTypeAnexo()));
                        MimeBodyPart anexo = new MimeBodyPart();  
                        anexo.setDataHandler(new DataHandler(dataSource));
                        anexo.setFileName(getNomeArquivo());
                        conteudo.addBodyPart(anexo);
                        message.setContent(conteudo);
                }
               
                Transport.send(message);
             } catch (MessagingException e) {
                 e.printStackTrace();
             } catch (IOException e) {
                        e.printStackTrace();
                }
        }
        */

       
        /*
        public static void main(String[] args) {
                Properties props = new Properties();
               
                props.put("mail.smtp.host", "mail.espacocase.net");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "587");
               
            Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("sistema@espacocase.net", "espaco10");
                }
            });
         
            session.setDebug(true);
         
            try {
                //Remetente
                Message message = new MimeMessage(session);
//              message.setFrom(new InternetAddress("espacocase@gmail.com"));
                message.setFrom(new InternetAddress("sistema@espacocase.net"));
         
                //Destinatário(s)
                Address[] toUser = InternetAddress.parse(ConstantesSEC.DESTINATARIOS_EMAIL_DIRECAO);
         
                message.setRecipients(Message.RecipientType.TO, toUser);
                message.setSubject("ESPAÇO CASE - CONSOLIDAÇÃO DO DIA 12/05/2015");//Assunto
                message.setText("CONSOLIDAÇÃO DO DIA 12/05/2015:\n\nValor bruto: R$13.045,00\nMeta: -R$16.750,00\nPendências: 1\n\nVendas do dia: R$1.600,00.\nLoja Poço: R$600,00.\nLoja Quiosque: R$1.000,00");
         
//              message.setSubject("ESPAÇO CASE E VOCÊ");//Assunto
//              message.setText("OLÁ {Cliente}, chegaram novidades para o seu aparelho. Acesse: www.espacocase.com.br e confira!");
                Transport.send(message);
         
                System.out.println("Feito!!!");
            } catch (MessagingException e) {
                 e.printStackTrace();
            }
        }
        */

       
}