Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
1 espaco 1
package br.com.ec.domain.service.email.impl;
2
 
3
import java.util.Date;
4
import java.util.Properties;
5
 
6
import javax.activation.DataHandler;
7
import javax.mail.Message;
8
import javax.mail.Multipart;
9
import javax.mail.PasswordAuthentication;
10
import javax.mail.Session;
11
import javax.mail.Transport;
12
import javax.mail.internet.InternetAddress;
13
import javax.mail.internet.MimeBodyPart;
14
import javax.mail.internet.MimeMessage;
15
import javax.mail.internet.MimeMessage.RecipientType;
16
import javax.mail.internet.MimeMultipart;
17
import javax.mail.util.ByteArrayDataSource;
18
 
19
import br.com.ec.domain.shared.ConstantesSEC;
20
import br.edu.cesmac.core.util.ArquivoUtil;
21
import br.edu.cesmac.core.util.PropertiesUtil;
22
import br.edu.cesmac.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 {
153
                        Message message = new MimeMessage(this.build());
154
                        Transport.send(message);
155
                } catch (Exception e) {
156
                        e.printStackTrace();
157
                }
158
        }
159
 
160
        /*
161
        private static final String NOME_PROPRIEDADE_EMAIL_EMAILORIGEM = "email.emailorigem";
162
        private static final String NOME_PROPRIEDADE_EMAIL_SENHA = "email.senha";
163
        private static final String NOME_PROPRIEDADE_EMAIL_USUARIO = "email.usuario";
164
        private static final String NOME_PROPRIEDADE_EMAIL_PORTA = "email.porta";
165
        private static final String NOME_PROPRIEDADE_EMAIL_HOSTNAME = "email.hostname";
166
        private static final String NOME_ARQUIVO_EMAIL_PROPERTY = "/email/email.properties";
167
 
168
        private String assunto;
169
        private String conteudo;
170
        private String destinatarios;
171
 
172
        private String nomeArquivo;
173
        private byte[] arquivoAnexo;
174
        private String contentTypeAnexo;
175
 
176
        private static final String EMAIL_FROM = "sistema@espacocase.net";
177
        private static final String EMAIL_PASS = "espaco10";
178
 
179
        public String getAssunto() {return assunto;}
180
        public void setAssunto(String assunto) {this.assunto = assunto;}
181
 
182
        public String getConteudo() {return conteudo;}
183
        public void setConteudo(String conteudo) {this.conteudo = conteudo;}
184
 
185
        public String getDestinatarios() {return destinatarios;}
186
        public void setDestinatarios(String destinatarios) {this.destinatarios = destinatarios;}
187
 
188
        public String getNomeArquivo() {return nomeArquivo;}
189
        public void setNomeArquivo(String nomeArquivo) {this.nomeArquivo = nomeArquivo;}
190
 
191
        public byte[] getArquivoAnexo() {return arquivoAnexo;}
192
        public void setArquivoAnexo(byte[] arquivoAnexo) {this.arquivoAnexo = arquivoAnexo;}
193
 
194
        public String getContentTypeAnexo() {return contentTypeAnexo;}
195
        public void setContentTypeAnexo(String contentTypeAnexo) {this.contentTypeAnexo = contentTypeAnexo;}
196
 
197
        private Session configurandoEmail() {
198
                try {
199
                        PropertiesUtil propertiesUtil = new PropertiesUtil(NOME_ARQUIVO_EMAIL_PROPERTY);
200
                        String hostname = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_HOSTNAME);
201
                        String porta = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_PORTA);
202
                        final String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_EMAILORIGEM);
203
                        final String senha = propertiesUtil.retornarPropriedadeDoArquivo( NOME_PROPRIEDADE_EMAIL_SENHA);
204
 
205
                        Properties props = new Properties();
206
                        props.put("mail.smtp.host", hostname);
207
                    props.put("mail.smtp.auth", "true");
208
                    props.put("mail.smtp.port", porta);
209
 
210
                    System.out.println(emailOrigem + "s");
211
                    System.out.println(emailOrigem.equals(EMAIL_FROM));
212
                    System.out.println(senha.equals(EMAIL_PASS));
213
 
214
                    Session sessao = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
215
                        protected PasswordAuthentication getPasswordAuthentication() {
216
                                return new PasswordAuthentication(emailOrigem, senha);
217
                        }
218
                    });
219
        //          sessao.setDebug(true);
220
                    return sessao;
221
                } catch (IOException e) {
222
                        e.printStackTrace();
223
                }
224
                return null;
225
        }
226
 
227
        public void enviarEmail() {
228
                try {
229
                        PropertiesUtil propertiesUtil = new PropertiesUtil(NOME_ARQUIVO_EMAIL_PROPERTY);
230
                        String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_EMAILORIGEM);
231
 
232
                Message message = new MimeMessage(configurandoEmail());
233
                message.setFrom(new InternetAddress(emailOrigem));
234
 
235
                Address[] emailsParaEnvio = InternetAddress.parse(destinatarios);
236
                message.setRecipients(Message.RecipientType.TO, emailsParaEnvio);
237
                message.setSubject(getAssunto());
238
                message.setText(getConteudo());
239
 
240
                if (VerificadorUtil.naoEstaNuloOuVazio(getArquivoAnexo())) {
241
                        Multipart conteudo = new MimeMultipart();
242
                        ByteArrayDataSource dataSource = new ByteArrayDataSource(getArquivoAnexo(), ArquivoUtil.retornarContentTypeArquivo(getContentTypeAnexo()));
243
                        MimeBodyPart anexo = new MimeBodyPart();  
244
                        anexo.setDataHandler(new DataHandler(dataSource));
245
                        anexo.setFileName(getNomeArquivo());
246
                        conteudo.addBodyPart(anexo);
247
                        message.setContent(conteudo);
248
                }
249
 
250
                Transport.send(message);
251
             } catch (MessagingException e) {
252
                 e.printStackTrace();
253
             } catch (IOException e) {
254
                        e.printStackTrace();
255
                }
256
        }
257
        */
258
 
259
        /*
260
        public static void main(String[] args) {
261
                Properties props = new Properties();
262
 
263
                props.put("mail.smtp.host", "mail.espacocase.net");
264
            props.put("mail.smtp.auth", "true");
265
            props.put("mail.smtp.port", "587");
266
 
267
            Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
268
                protected PasswordAuthentication getPasswordAuthentication() {
269
                        return new PasswordAuthentication("sistema@espacocase.net", "espaco10");
270
                }
271
            });
272
 
273
            session.setDebug(true);
274
 
275
            try {
276
                //Remetente
277
                Message message = new MimeMessage(session);
278
//              message.setFrom(new InternetAddress("espacocase@gmail.com"));
279
                message.setFrom(new InternetAddress("sistema@espacocase.net"));
280
 
281
                //Destinatário(s)
282
                Address[] toUser = InternetAddress.parse(ConstantesSEC.DESTINATARIOS_EMAIL_DIRECAO);
283
 
284
                message.setRecipients(Message.RecipientType.TO, toUser);
285
                message.setSubject("ESPAÇO CASE - CONSOLIDAÇÃO DO DIA 12/05/2015");//Assunto
286
                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");
287
 
288
//              message.setSubject("ESPAÇO CASE E VOCÊ");//Assunto
289
//              message.setText("OLÁ {Cliente}, chegaram novidades para o seu aparelho. Acesse: www.espacocase.com.br e confira!");
290
                Transport.send(message);
291
 
292
                System.out.println("Feito!!!");
293
            } catch (MessagingException e) {
294
                 e.printStackTrace();
295
            }
296
        }
297
        */
298
}