Subversion Repositories Integrator Subversion

Rev

Rev 303 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
303 espaco 1
package br.com.ec.domain.shared;
2
 
3
import java.util.Date;
4
import java.util.Properties;
5
 
6
import javax.activation.DataHandler;
357 espaco 7
import javax.mail.Address;
303 espaco 8
import javax.mail.Message;
9
import javax.mail.Multipart;
10
import javax.mail.PasswordAuthentication;
11
import javax.mail.Session;
12
import javax.mail.Transport;
13
import javax.mail.internet.InternetAddress;
14
import javax.mail.internet.MimeBodyPart;
15
import javax.mail.internet.MimeMessage;
16
import javax.mail.internet.MimeMessage.RecipientType;
17
import javax.mail.internet.MimeMultipart;
18
import javax.mail.util.ByteArrayDataSource;
19
 
20
import br.com.ec.core.util.ArquivoUtil;
21
import br.com.ec.core.util.PropertiesUtil;
22
import br.com.ec.core.util.VerificadorUtil;
23
 
24
public class GerenciadorEmailImpl {
25
 
26
        private MimeMessage email;
27
        private Multipart conteudo = new MimeMultipart();
28
 
29
        public GerenciadorEmailImpl() {
30
                try {
31
                        PropertiesUtil propertiesUtil = new PropertiesUtil("/email/email.properties");
32
                        String hostname = propertiesUtil.retornarPropriedadeDoArquivo("email.hostname");
33
                        String porta = propertiesUtil.retornarPropriedadeDoArquivo("email.porta");
34
                        final String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo("email.emailorigem");
35
                        final String senha = propertiesUtil.retornarPropriedadeDoArquivo( "email.senha");
36
 
37
                        Properties propriedades = new Properties();
38
                        propriedades.put("mail.smtp.host", hostname);
39
                        propriedades.put("mail.smtp.auth", "true");
40
                        propriedades.put("mail.smtp.port", porta);
41
 
42
                        email = new MimeMessage(Session.getDefaultInstance(propriedades, new javax.mail.Authenticator() {
43
                                        protected PasswordAuthentication getPasswordAuthentication() {
44
                                                return new PasswordAuthentication(emailOrigem, senha);
45
                                        }
46
                                }));
47
                        this.comEmailOrigem(emailOrigem);
48
                } catch (Exception e) {
49
                        e.printStackTrace();
50
                }
51
        }
52
 
53
        public GerenciadorEmailImpl comSessao(Session sessao) {
54
                email = new MimeMessage(sessao);
55
                return this;
56
        }
57
 
58
        public GerenciadorEmailImpl comDataEnvio(Date dataEnvio) {
59
                try {
60
                        email.setSentDate(dataEnvio);
61
                } catch (Exception e) {
62
                        e.printStackTrace();
63
                }
64
                return this;
65
        }
66
 
67
        public GerenciadorEmailImpl comEmailOrigem(String emailOrigem) {
68
                try {
69
                        email.setFrom(new InternetAddress(emailOrigem));
70
                } catch (Exception e) {
71
                        e.printStackTrace();
72
                }
73
                return this;
74
        }
75
 
76
        public GerenciadorEmailImpl comEmailDestino(String emailDestino) {
77
                try {
78
                        email.setRecipient(RecipientType.TO, new InternetAddress(emailDestino));
79
                } catch (Exception e) {
80
                        e.printStackTrace();
81
                }
82
                return this;
83
        }
84
 
85
        public GerenciadorEmailImpl comEmailsDestino(String emailsDestino) {
86
                try {
87
                        email.setRecipients(RecipientType.TO, InternetAddress.parse(emailsDestino));
88
                } catch (Exception e) {
89
                        e.printStackTrace();
90
                }
91
                return this;
92
        }
93
 
94
        public GerenciadorEmailImpl comAssunto(String assunto) {
95
                try {
96
                        email.setSubject(assunto);
97
                } catch (Exception e) {
98
                        e.printStackTrace();
99
                }
100
                return this;
101
        }
102
 
103
        public GerenciadorEmailImpl comConteudo(String corpo) {
104
                try {
105
                        conteudo = null;
106
                        email.setText(corpo);
107
                } catch (Exception e) {
108
                        e.printStackTrace();
109
                }
110
                return this;
111
        }
112
 
113
        public GerenciadorEmailImpl comConteudoHtml(String corpo) {
114
                try {
115
                        MimeBodyPart corpoHTML = new MimeBodyPart();
116
                        corpoHTML.setContent(corpo,"text/html; charset=UTF-8");
117
                        conteudo.addBodyPart(corpoHTML);
118
                } catch (Exception e) {
119
                        e.printStackTrace();
120
                }
121
                return this;
122
        }
123
 
124
        public GerenciadorEmailImpl adicionarAnexo(String legendaArquivo, byte[] arquivoEmBytes, String contentTypeArquivo) {
125
                try {
126
                        if (VerificadorUtil.estaNulo(conteudo)) {
127
                                conteudo = new MimeMultipart();
128
                        }
129
                        ByteArrayDataSource dataSource = new ByteArrayDataSource(arquivoEmBytes, ArquivoUtil.retornarContentTypeArquivo(contentTypeArquivo));
130
                        MimeBodyPart anexo = new MimeBodyPart();  
131
                        anexo.setDataHandler(new DataHandler(dataSource));
132
                        anexo.setFileName(legendaArquivo);
133
                        conteudo.addBodyPart(anexo);
134
                } catch (Exception e) {
135
                        e.printStackTrace();
136
                }
137
                return this;
138
        }
139
 
140
        public final MimeMessage build() {
141
                try {
142
                        if (VerificadorUtil.naoEstaNulo(conteudo)) {
143
                                email.setContent(conteudo);
144
                        }
145
                } catch (Exception e) {
146
                        e.printStackTrace();
147
                }
148
                return email;
149
        }
150
 
151
        public final void enviar() {
152
                try {
357 espaco 153
                        Address[] enderecos = email.getRecipients(Message.RecipientType.TO);
154
                        if (enderecos.length > 1) {
155
                                email.setRecipients(RecipientType.TO, "");
156
                                for (Address endereco : enderecos) {
157
                                        email.setRecipient(RecipientType.TO, endereco);
158
                                        Message message = new MimeMessage(this.build());
159
                                        Transport.send(message);
160
                                }
161
                        } else {
162
                                Message message = new MimeMessage(this.build());
163
                                Transport.send(message);
164
                        }
303 espaco 165
                } catch (Exception e) {
166
                        e.printStackTrace();
167
                }
168
        }
169
 
170
        /*
171
        private static final String NOME_PROPRIEDADE_EMAIL_EMAILORIGEM = "email.emailorigem";
172
        private static final String NOME_PROPRIEDADE_EMAIL_SENHA = "email.senha";
173
        private static final String NOME_PROPRIEDADE_EMAIL_USUARIO = "email.usuario";
174
        private static final String NOME_PROPRIEDADE_EMAIL_PORTA = "email.porta";
175
        private static final String NOME_PROPRIEDADE_EMAIL_HOSTNAME = "email.hostname";
176
        private static final String NOME_ARQUIVO_EMAIL_PROPERTY = "/email/email.properties";
177
 
178
        private String assunto;
179
        private String conteudo;
180
        private String destinatarios;
181
 
182
        private String nomeArquivo;
183
        private byte[] arquivoAnexo;
184
        private String contentTypeAnexo;
185
 
186
        private static final String EMAIL_FROM = "sistema@espacocase.net";
187
        private static final String EMAIL_PASS = "espaco10";
188
 
189
        public String getAssunto() {return assunto;}
190
        public void setAssunto(String assunto) {this.assunto = assunto;}
191
 
192
        public String getConteudo() {return conteudo;}
193
        public void setConteudo(String conteudo) {this.conteudo = conteudo;}
194
 
195
        public String getDestinatarios() {return destinatarios;}
196
        public void setDestinatarios(String destinatarios) {this.destinatarios = destinatarios;}
197
 
198
        public String getNomeArquivo() {return nomeArquivo;}
199
        public void setNomeArquivo(String nomeArquivo) {this.nomeArquivo = nomeArquivo;}
200
 
201
        public byte[] getArquivoAnexo() {return arquivoAnexo;}
202
        public void setArquivoAnexo(byte[] arquivoAnexo) {this.arquivoAnexo = arquivoAnexo;}
203
 
204
        public String getContentTypeAnexo() {return contentTypeAnexo;}
205
        public void setContentTypeAnexo(String contentTypeAnexo) {this.contentTypeAnexo = contentTypeAnexo;}
206
 
207
        private Session configurandoEmail() {
208
                try {
209
                        PropertiesUtil propertiesUtil = new PropertiesUtil(NOME_ARQUIVO_EMAIL_PROPERTY);
210
                        String hostname = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_HOSTNAME);
211
                        String porta = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_PORTA);
212
                        final String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_EMAILORIGEM);
213
                        final String senha = propertiesUtil.retornarPropriedadeDoArquivo( NOME_PROPRIEDADE_EMAIL_SENHA);
214
 
215
                        Properties props = new Properties();
216
                        props.put("mail.smtp.host", hostname);
217
                    props.put("mail.smtp.auth", "true");
218
                    props.put("mail.smtp.port", porta);
219
 
220
                    System.out.println(emailOrigem + "s");
221
                    System.out.println(emailOrigem.equals(EMAIL_FROM));
222
                    System.out.println(senha.equals(EMAIL_PASS));
223
 
224
                    Session sessao = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
225
                        protected PasswordAuthentication getPasswordAuthentication() {
226
                                return new PasswordAuthentication(emailOrigem, senha);
227
                        }
228
                    });
229
        //          sessao.setDebug(true);
230
                    return sessao;
231
                } catch (IOException e) {
232
                        e.printStackTrace();
233
                }
234
                return null;
235
        }
236
 
237
        public void enviarEmail() {
238
                try {
239
                        PropertiesUtil propertiesUtil = new PropertiesUtil(NOME_ARQUIVO_EMAIL_PROPERTY);
240
                        String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_EMAILORIGEM);
241
 
242
                Message message = new MimeMessage(configurandoEmail());
243
                message.setFrom(new InternetAddress(emailOrigem));
244
 
245
                Address[] emailsParaEnvio = InternetAddress.parse(destinatarios);
246
                message.setRecipients(Message.RecipientType.TO, emailsParaEnvio);
247
                message.setSubject(getAssunto());
248
                message.setText(getConteudo());
249
 
250
                if (VerificadorUtil.naoEstaNuloOuVazio(getArquivoAnexo())) {
251
                        Multipart conteudo = new MimeMultipart();
252
                        ByteArrayDataSource dataSource = new ByteArrayDataSource(getArquivoAnexo(), ArquivoUtil.retornarContentTypeArquivo(getContentTypeAnexo()));
253
                        MimeBodyPart anexo = new MimeBodyPart();  
254
                        anexo.setDataHandler(new DataHandler(dataSource));
255
                        anexo.setFileName(getNomeArquivo());
256
                        conteudo.addBodyPart(anexo);
257
                        message.setContent(conteudo);
258
                }
259
 
260
                Transport.send(message);
261
             } catch (MessagingException e) {
262
                 e.printStackTrace();
263
             } catch (IOException e) {
264
                        e.printStackTrace();
265
                }
266
        }
267
        */
268
 
269
        /*
270
        public static void main(String[] args) {
271
                Properties props = new Properties();
272
 
273
                props.put("mail.smtp.host", "mail.espacocase.net");
274
            props.put("mail.smtp.auth", "true");
275
            props.put("mail.smtp.port", "587");
276
 
277
            Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
278
                protected PasswordAuthentication getPasswordAuthentication() {
279
                        return new PasswordAuthentication("sistema@espacocase.net", "espaco10");
280
                }
281
            });
282
 
283
            session.setDebug(true);
284
 
285
            try {
286
                //Remetente
287
                Message message = new MimeMessage(session);
288
//              message.setFrom(new InternetAddress("espacocase@gmail.com"));
289
                message.setFrom(new InternetAddress("sistema@espacocase.net"));
290
 
291
                //Destinatário(s)
292
                Address[] toUser = InternetAddress.parse(ConstantesSEC.DESTINATARIOS_EMAIL_DIRECAO);
293
 
294
                message.setRecipients(Message.RecipientType.TO, toUser);
295
                message.setSubject("ESPAÇO CASE - CONSOLIDAÇÃO DO DIA 12/05/2015");//Assunto
296
                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");
297
 
298
//              message.setSubject("ESPAÇO CASE E VOCÊ");//Assunto
299
//              message.setText("OLÁ {Cliente}, chegaram novidades para o seu aparelho. Acesse: www.espacocase.com.br e confira!");
300
                Transport.send(message);
301
 
302
                System.out.println("Feito!!!");
303
            } catch (MessagingException e) {
304
                 e.printStackTrace();
305
            }
306
        }
307
        */
308
}