Commit 2764761edc73ea2db57c1e03290cb10c63b2318a
1 parent
592200e2
Exists in
master
Correção da formatação de envio de email.
Showing
3 changed files
with
130 additions
and
125 deletions
Show diff stats
src/br/com/controller/QuestionarioController.java
@@ -2,7 +2,9 @@ package br.com.controller; | @@ -2,7 +2,9 @@ package br.com.controller; | ||
2 | 2 | ||
3 | import java.io.IOException; | 3 | import java.io.IOException; |
4 | import java.security.NoSuchAlgorithmException; | 4 | import java.security.NoSuchAlgorithmException; |
5 | +import java.text.SimpleDateFormat; | ||
5 | import java.util.ArrayList; | 6 | import java.util.ArrayList; |
7 | +import java.util.Date; | ||
6 | import java.util.List; | 8 | import java.util.List; |
7 | import java.util.Properties; | 9 | import java.util.Properties; |
8 | 10 | ||
@@ -46,50 +48,56 @@ public class QuestionarioController { | @@ -46,50 +48,56 @@ public class QuestionarioController { | ||
46 | public void questionario() { | 48 | public void questionario() { |
47 | 49 | ||
48 | } | 50 | } |
49 | - | 51 | + |
50 | @Path("/confirmacaoHash") | 52 | @Path("/confirmacaoHash") |
51 | - public void confirmacaoHash(){ | ||
52 | - | 53 | + public void confirmacaoHash() { |
54 | + | ||
53 | } | 55 | } |
54 | - | 56 | + |
55 | 57 | ||
56 | @Path("/salvar-questionario") | 58 | @Path("/salvar-questionario") |
57 | - public void questionarioSalvar(String autorizacao, String noOrgao, String nomeResponsavel, String cargoResponsavel, String emailDestinoOrgao, String telefoneResponsavel, UploadedFile file) { | ||
58 | - | ||
59 | - | 59 | + public void questionarioSalvar(String autorizacao, String noOrgao, String nomeResponsavel, |
60 | + String cargoResponsavel, String emailDestinoOrgao, String telefoneResponsavel, | ||
61 | + UploadedFile file) { | ||
62 | + | ||
63 | + | ||
60 | AutorizacaoGeracaoHashDao autorizacaoGeracaoHashDao = new AutorizacaoGeracaoHashDao(); | 64 | AutorizacaoGeracaoHashDao autorizacaoGeracaoHashDao = new AutorizacaoGeracaoHashDao(); |
61 | String mensagemEnvio = ""; | 65 | String mensagemEnvio = ""; |
62 | - | ||
63 | - if(autorizacaoGeracaoHashDao.verificarAutorizacaoGeracaoHash(path, autorizacao)) | ||
64 | - { | 66 | + |
67 | + if (autorizacaoGeracaoHashDao.verificarAutorizacaoGeracaoHash(path, autorizacao)) { | ||
65 | String[] codigo = emailDestinoOrgao.split("@"); | 68 | String[] codigo = emailDestinoOrgao.split("@"); |
66 | - String codigoHash = codigo[0] + DateUtil.dataHoraAtual().toString().replace("/", "").replace(" ", "").replace(":", ""); | ||
67 | - | ||
68 | - | 69 | + String codigoHash = |
70 | + codigo[0] | ||
71 | + + DateUtil.dataHoraAtual().toString().replace("/", "").replace(" ", "") | ||
72 | + .replace(":", ""); | ||
73 | + | ||
74 | + | ||
69 | Questionario questionario = new Questionario(); | 75 | Questionario questionario = new Questionario(); |
70 | // BufferedReader reader = new BufferedReader(new InputStreamReader(file.getFile())); | 76 | // BufferedReader reader = new BufferedReader(new InputStreamReader(file.getFile())); |
71 | 77 | ||
72 | - ManagerProperties managerProperties = new ManagerProperties(); | ||
73 | - | 78 | + ManagerProperties managerProperties = new ManagerProperties(); |
79 | + | ||
74 | String dtInicioQuestionario = ""; | 80 | String dtInicioQuestionario = ""; |
75 | String dtFimQuestionario = ""; | 81 | String dtFimQuestionario = ""; |
76 | String hashAutenticacao = null; | 82 | String hashAutenticacao = null; |
77 | Properties prop = null; | 83 | Properties prop = null; |
78 | - | 84 | + |
79 | try { | 85 | try { |
80 | - prop = managerProperties.getProp(this.application.getRealPath("") + "/WEB-INF/respostaFormulario.properties"); | ||
81 | - | ||
82 | - dtInicioQuestionario = prop.getProperty("dataInicio"); | ||
83 | - dtFimQuestionario = prop.getProperty("dataFim"); | 86 | + prop = |
87 | + managerProperties.getProp(this.application.getRealPath("") | ||
88 | + + "/WEB-INF/respostaFormulario.properties"); | ||
89 | + | ||
90 | + dtInicioQuestionario = prop.getProperty("dataInicio"); | ||
91 | + dtFimQuestionario = prop.getProperty("dataFim"); | ||
84 | hashAutenticacao = GeradorCodigoHash.gerarHash(codigoHash); | 92 | hashAutenticacao = GeradorCodigoHash.gerarHash(codigoHash); |
85 | - | ||
86 | - } catch (IOException e) { | 93 | + |
94 | + } catch (IOException e) { | ||
87 | e.printStackTrace(); | 95 | e.printStackTrace(); |
88 | - } catch (NoSuchAlgorithmException e) { | ||
89 | - | ||
90 | - e.printStackTrace(); | ||
91 | - } | ||
92 | - | 96 | + } catch (NoSuchAlgorithmException e) { |
97 | + | ||
98 | + e.printStackTrace(); | ||
99 | + } | ||
100 | + | ||
93 | questionario.setDtInicioQuestionario(dtInicioQuestionario); | 101 | questionario.setDtInicioQuestionario(dtInicioQuestionario); |
94 | questionario.setDtFimQuestionario(dtFimQuestionario); | 102 | questionario.setDtFimQuestionario(dtFimQuestionario); |
95 | questionario.setEmailDestinoOrgao(emailDestinoOrgao); | 103 | questionario.setEmailDestinoOrgao(emailDestinoOrgao); |
@@ -100,122 +108,92 @@ public class QuestionarioController { | @@ -100,122 +108,92 @@ public class QuestionarioController { | ||
100 | questionario.setNoOrgao(noOrgao); | 108 | questionario.setNoOrgao(noOrgao); |
101 | 109 | ||
102 | QuestionarioDao questionarioDao = new QuestionarioDao(); | 110 | QuestionarioDao questionarioDao = new QuestionarioDao(); |
103 | - // List<String> corpoEmail = new ArrayList<String>(); | 111 | + // List<String> corpoEmail = new ArrayList<String>(); |
104 | if (questionarioDao.salvarQuestionario(path, file.getFile(), questionario)) { | 112 | if (questionarioDao.salvarQuestionario(path, file.getFile(), questionario)) { |
105 | - | ||
106 | - | ||
107 | - /* corpoEmail.add("Prezado(a),"); | ||
108 | - corpoEmail.add("senhor(a) "+ nomeResponsavel +", " + cargoResponsavel + ", do "+ noOrgao +", conforme solicitado, o acesso "); | ||
109 | - corpoEmail.add("ao FAD para o preenchimento de informações sobre a atual situação da "); | ||
110 | - corpoEmail.add("acessibilidade dos ambientes digitais do seu órgão ou entidade deverá ser "); | ||
111 | - corpoEmail.add("realizado pelo endereço "+ prop.getProperty("enderecoFad") + " utilizando o código de "); | ||
112 | - corpoEmail.add("acesso: "+ hashAutenticacao +" ."); | ||
113 | - corpoEmail.add(""); | ||
114 | - corpoEmail.add("A guarda do código de acesso, bem como as informações prestadas são de sua "); | ||
115 | - corpoEmail.add("inteira responsabilidade."); | ||
116 | - corpoEmail.add(""); | ||
117 | - corpoEmail.add("O FAD poderá ser preenchido no período "+ prop.getProperty("dataInicio") + " a "+ prop.getProperty("dataFim") +", data limite "); | ||
118 | - corpoEmail.add("para o envio do relatório circunstanciado (formulário de acessibilidade digital e plano de "); | ||
119 | - corpoEmail.add("trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério Público Federal e "); | ||
120 | - corpoEmail.add("publicado no sítio ou portal eletrônico do órgão ou entidade."); | ||
121 | - corpoEmail.add(""); | ||
122 | - corpoEmail.add("Maiores informações, dúvidas e sugestões devem ser encaminhadas pelo canal "); | ||
123 | - corpoEmail.add(prop.getProperty("enderecoFad") + "."); | ||
124 | - corpoEmail.add(""); | ||
125 | - corpoEmail.add("Respeitosamente,"); | ||
126 | - corpoEmail.add(""); | ||
127 | - corpoEmail.add("Ministério do Planejamento, Desenvolvimento e Gestão"); | ||
128 | - corpoEmail.add("Secretaria de Tecnologia da Informação"); | ||
129 | - corpoEmail.add("Departamento de Governo Digital "); | ||
130 | - corpoEmail.add("Coordenação-Geral de Padrões de Governo Digital"); | ||
131 | - corpoEmail.add(prop.getProperty("emailContato")); | ||
132 | - corpoEmail.add(""); | ||
133 | - | ||
134 | - String[] telefoneContato = prop.getProperty("telefoneContato").split(","); | ||
135 | - | ||
136 | - for (String numeroTelefone : telefoneContato) { | ||
137 | - corpoEmail.add(numeroTelefone); | ||
138 | - }*/ | ||
139 | - | 113 | + |
140 | StringBuffer mensagem = new StringBuffer(); | 114 | StringBuffer mensagem = new StringBuffer(); |
141 | - | ||
142 | - mensagem.append("Prezado(a),\n"); | ||
143 | - mensagem.append("senhor(a) "+ nomeResponsavel +", " + cargoResponsavel + ", do "+ noOrgao +", conforme solicitado, o acesso \n"); | ||
144 | - mensagem.append("ao FAD para o preenchimento de informações sobre a atual situação da \n"); | ||
145 | - mensagem.append("acessibilidade dos ambientes digitais do seu órgão ou entidade deverá ser \n"); | ||
146 | - mensagem.append("realizado pelo endereço "+ prop.getProperty("enderecoFad") + " utilizando o código de \n"); | ||
147 | - mensagem.append("acesso: "+ hashAutenticacao +" .\n\n"); | ||
148 | - | ||
149 | - mensagem.append("A guarda do código de acesso, bem como as informações prestadas são de sua \n"); | ||
150 | - mensagem.append("inteira responsabilidade.\n\n"); | ||
151 | - | ||
152 | - mensagem.append("O FAD poderá ser preenchido no período "+ prop.getProperty("dataInicio") + " a "+ prop.getProperty("dataFim") +", data limite \n"); | ||
153 | - mensagem.append("para o envio do relatório circunstanciado (formulário de acessibilidade digital e plano de \n"); | ||
154 | - mensagem.append("trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério Público Federal e \n"); | ||
155 | - mensagem.append("publicado no sítio ou portal eletrônico do órgão ou entidade.\n\n"); | ||
156 | - | ||
157 | - mensagem.append("Maiores informações, dúvidas e sugestões devem ser encaminhadas pelo canal \n"); | ||
158 | - mensagem.append(prop.getProperty("enderecoFad") + ".\n\n"); | ||
159 | - | ||
160 | - mensagem.append("Respeitosamente,\n\n"); | ||
161 | - | ||
162 | - mensagem.append("Ministério do Planejamento, Desenvolvimento e Gestão\n"); | ||
163 | - mensagem.append("Secretaria de Tecnologia da Informação\n"); | ||
164 | - mensagem.append("Departamento de Governo Digital \n"); | ||
165 | - mensagem.append("Coordenação-Geral de Padrões de Governo Digital\n"); | ||
166 | - mensagem.append(prop.getProperty("emailContato") + "\n"); | ||
167 | - | 115 | + |
116 | + mensagem.append("Prezado(a),</br>"); | ||
117 | + mensagem.append("<p>Senhor(a) " + nomeResponsavel + ", " + cargoResponsavel + ", do " | ||
118 | + + noOrgao + ", conforme solicitado, o acesso "); | ||
119 | + mensagem.append("ao FAD para o preenchimento de informações sobre a atual situação da "); | ||
120 | + mensagem | ||
121 | + .append("acessibilidade dos ambientes digitais do seu órgão ou entidade deverá ser "); | ||
122 | + mensagem.append("realizado pelo endereço " + "<a href=\"" + prop.getProperty("enderecoFad") + "\">" + prop.getProperty("enderecoFad") + "</a>" | ||
123 | + + " utilizando o código de "); | ||
124 | + mensagem.append("acesso: " + hashAutenticacao + " .</p>"); | ||
125 | + | ||
126 | + mensagem | ||
127 | + .append("<p>A guarda do código de acesso, bem como as informações prestadas são de sua "); | ||
128 | + mensagem.append("inteira responsabilidade.</p>"); | ||
129 | + | ||
130 | + mensagem.append("<p>O FAD poderá ser preenchido no período " | ||
131 | + + DateUtil.dataHoraFormatadaDiaMesAno(prop.getProperty("dataInicio")) + " a " | ||
132 | + + DateUtil.dataHoraFormatadaDiaMesAno(prop.getProperty("dataFim")) + ", data limite "); | ||
133 | + mensagem | ||
134 | + .append("para o envio do relatório circunstanciado (formulário de acessibilidade digital e plano de "); | ||
135 | + mensagem | ||
136 | + .append("trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério Público Federal e "); | ||
137 | + mensagem.append("publicado no sítio ou portal eletrônico do órgão ou entidade.</p>"); | ||
138 | + | ||
139 | + mensagem | ||
140 | + .append("<p>Maiores informações, dúvidas e sugestões devem ser encaminhadas pelo canal "); | ||
141 | + mensagem.append("<a href=\"" + prop.getProperty("enderecoFad") + "\">" + prop.getProperty("enderecoFad") + "</a>.</p>"); | ||
142 | + | ||
143 | + mensagem.append("<p>Respeitosamente,</p>"); | ||
144 | + | ||
145 | + mensagem.append("<p>Ministério do Planejamento, Desenvolvimento e Gestão "); | ||
146 | + mensagem.append("Secretaria de Tecnologia da Informação "); | ||
147 | + mensagem.append("Departamento de Governo Digital "); | ||
148 | + mensagem.append("Coordenação-Geral de Padrões de Governo Digital "); | ||
149 | + mensagem.append(prop.getProperty("emailContato") + "</br>"); | ||
150 | + | ||
168 | String[] telefoneContato = prop.getProperty("telefoneContato").split(","); | 151 | String[] telefoneContato = prop.getProperty("telefoneContato").split(","); |
169 | - | 152 | + |
170 | for (String numeroTelefone : telefoneContato) { | 153 | for (String numeroTelefone : telefoneContato) { |
171 | - mensagem.append(numeroTelefone + "\n"); | 154 | + mensagem.append(numeroTelefone + "</br>"); |
172 | } | 155 | } |
173 | - | 156 | + mensagem.append("</p>"); |
157 | + | ||
174 | Contato contato = new Contato(); | 158 | Contato contato = new Contato(); |
175 | contato.setEmail(emailDestinoOrgao); | 159 | contato.setEmail(emailDestinoOrgao); |
176 | - contato.setAssunto("Formulário Eletrônico de Acessibilidade Digital (FAD) – Concessão de Acesso"); | ||
177 | - contato.setMensagem(StringHelper.convertFromUTF8(mensagem.toString())); | 160 | + contato |
161 | + .setAssunto("Formulário Eletrônico de Acessibilidade Digital (FAD) – Concessão de Acesso"); | ||
162 | + contato.setMensagem(mensagem.toString()); | ||
178 | contato.setNome(nomeResponsavel); | 163 | contato.setNome(nomeResponsavel); |
179 | 164 | ||
180 | - if(enviarHashPorEmail(contato)) | ||
181 | - { | ||
182 | - mensagemEnvio = "Questionário salvo e enviado por email com suceso!"; | ||
183 | - }else | ||
184 | - { | ||
185 | - mensagemEnvio = "Questionário salvo, mas não foi possível enviar email!"; | 165 | + if (enviarHashPorEmail(contato)) { |
166 | + mensagemEnvio = "Questionário salvo e enviado por email com suceso!"; | ||
167 | + } else { | ||
168 | + mensagemEnvio = "Questionário salvo, mas não foi possível enviar email!"; | ||
186 | } | 169 | } |
187 | result.include("mensagemEnvio", mensagemEnvio); | 170 | result.include("mensagemEnvio", mensagemEnvio); |
188 | this.validator.add(new ValidationMessage("", "")); | 171 | this.validator.add(new ValidationMessage("", "")); |
189 | this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash(); | 172 | this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash(); |
190 | - } | ||
191 | - else | ||
192 | - { | 173 | + } else { |
193 | mensagemEnvio = "Não foi possível salvar o questionário!"; | 174 | mensagemEnvio = "Não foi possível salvar o questionário!"; |
194 | result.include("mensagemEnvio", mensagemEnvio); | 175 | result.include("mensagemEnvio", mensagemEnvio); |
195 | this.validator.add(new ValidationMessage("", "")); | 176 | this.validator.add(new ValidationMessage("", "")); |
196 | this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash(); | 177 | this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash(); |
197 | } | 178 | } |
198 | - } | ||
199 | - else | ||
200 | - { | 179 | + } else { |
201 | mensagemEnvio = "É preciso autorização para salvar gerar código Hash!"; | 180 | mensagemEnvio = "É preciso autorização para salvar gerar código Hash!"; |
202 | result.include("mensagemEnvio", mensagemEnvio); | 181 | result.include("mensagemEnvio", mensagemEnvio); |
203 | this.validator.add(new ValidationMessage("", "")); | 182 | this.validator.add(new ValidationMessage("", "")); |
204 | this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash(); | 183 | this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash(); |
205 | } | 184 | } |
206 | - | ||
207 | 185 | ||
208 | - } | ||
209 | 186 | ||
210 | -/* | ||
211 | - private String gerarCodigoHash() { | ||
212 | - String codigoHash = ""; | 187 | + } |
213 | 188 | ||
214 | - return codigoHash; | ||
215 | - }*/ | 189 | + /* |
190 | + * private String gerarCodigoHash() { String codigoHash = ""; | ||
191 | + * | ||
192 | + * return codigoHash; } | ||
193 | + */ | ||
216 | 194 | ||
217 | private boolean enviarHashPorEmail(Contato contato) { | 195 | private boolean enviarHashPorEmail(Contato contato) { |
218 | - | 196 | + |
219 | boolean emailEnviado = false; | 197 | boolean emailEnviado = false; |
220 | 198 | ||
221 | 199 | ||
@@ -225,13 +203,12 @@ public class QuestionarioController { | @@ -225,13 +203,12 @@ public class QuestionarioController { | ||
225 | 203 | ||
226 | EnvioEmailSemAutenticacao envioEmailSemAutenticacao = | 204 | EnvioEmailSemAutenticacao envioEmailSemAutenticacao = |
227 | new EnvioEmailSemAutenticacao(email.getHost(), Integer.toString(email.getPort())); | 205 | new EnvioEmailSemAutenticacao(email.getHost(), Integer.toString(email.getPort())); |
228 | - | ||
229 | - | 206 | + |
207 | + | ||
230 | respSendEmail = | 208 | respSendEmail = |
231 | envioEmailSemAutenticacao.sendMailComCopia(email.getFrom(), contato.getEmail(), | 209 | envioEmailSemAutenticacao.sendMailComCopia(email.getFrom(), contato.getEmail(), |
232 | - StringHelper.convertFromUTF8(contato.getAssunto()), | ||
233 | - StringHelper.convertFromUTF8(contato.getMensagem()), email.getAuth(), | ||
234 | - email.getAuthUser(), email.getAuthPass(), email.getCopiaEmailTo()); | 210 | + contato.getAssunto(), contato.getMensagem(), email.getAuth(), email.getAuthUser(), |
211 | + email.getAuthPass(), email.getCopiaEmailTo()); | ||
235 | 212 | ||
236 | 213 | ||
237 | /* | 214 | /* |
src/br/com/model/entity/EnvioEmailSemAutenticacao.java
@@ -11,6 +11,11 @@ import javax.mail.Transport; | @@ -11,6 +11,11 @@ import javax.mail.Transport; | ||
11 | import javax.mail.internet.InternetAddress; | 11 | import javax.mail.internet.InternetAddress; |
12 | import javax.mail.internet.MimeMessage; | 12 | import javax.mail.internet.MimeMessage; |
13 | 13 | ||
14 | +import org.apache.commons.codec.StringEncoder; | ||
15 | +import org.apache.commons.io.output.StringBuilderWriter; | ||
16 | + | ||
17 | +import br.com.model.utilities.StringHelper; | ||
18 | + | ||
14 | 19 | ||
15 | public class EnvioEmailSemAutenticacao { | 20 | public class EnvioEmailSemAutenticacao { |
16 | private String mailSMTPServer; | 21 | private String mailSMTPServer; |
@@ -143,10 +148,11 @@ public class EnvioEmailSemAutenticacao { | @@ -143,10 +148,11 @@ public class EnvioEmailSemAutenticacao { | ||
143 | 148 | ||
144 | 149 | ||
145 | // Setando o destinat�rio | 150 | // Setando o destinat�rio |
151 | + | ||
146 | msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); | 152 | msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); |
147 | - msg.setReplyTo(new javax.mail.Address[] | ||
148 | - { | ||
149 | - new javax.mail.internet.InternetAddress(copiaEmailTo) | 153 | + msg.reply(true); |
154 | + msg.setReplyTo(new InternetAddress[] { | ||
155 | + new InternetAddress(copiaEmailTo) | ||
150 | }); | 156 | }); |
151 | 157 | ||
152 | // Setando a origem do email | 158 | // Setando a origem do email |
@@ -156,8 +162,9 @@ public class EnvioEmailSemAutenticacao { | @@ -156,8 +162,9 @@ public class EnvioEmailSemAutenticacao { | ||
156 | // Setando o conte�do/corpo do email | 162 | // Setando o conte�do/corpo do email |
157 | 163 | ||
158 | //for (String message : corpoEmail) { | 164 | //for (String message : corpoEmail) { |
159 | - msg.setText(corpoEmail); //setContent(message, "text/html; charset=utf-8" + "\n"); | ||
160 | - //} | 165 | + msg.setContent(corpoEmail, "text/html; charset=utf-8"); |
166 | + | ||
167 | + //} | ||
161 | 168 | ||
162 | 169 | ||
163 | } catch (Exception e) { | 170 | } catch (Exception e) { |
src/br/com/util/DateUtil.java
@@ -17,5 +17,26 @@ public class DateUtil { | @@ -17,5 +17,26 @@ public class DateUtil { | ||
17 | Date dataFormatada = dateFormat.parse(data); | 17 | Date dataFormatada = dateFormat.parse(data); |
18 | return dataFormatada; | 18 | return dataFormatada; |
19 | } | 19 | } |
20 | + | ||
21 | + public static String dataHoraFormatadaDiaMesAno(String dataParametro) { | ||
22 | + | ||
23 | + Date dataParametroConvertida = new Date(); | ||
24 | + | ||
25 | + SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy-MM-dd"); | ||
26 | + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); | ||
27 | + String dataFormatadaCorreta = null; | ||
28 | + | ||
29 | + try { | ||
30 | + dataParametroConvertida = dataFormat.parse(dataParametro); | ||
31 | + dataFormatadaCorreta = sdf.format(dataParametroConvertida); | ||
32 | + } catch (ParseException e) { | ||
33 | + e.printStackTrace(); | ||
34 | + } | ||
35 | + | ||
36 | + | ||
37 | + return dataFormatadaCorreta; | ||
38 | + } | ||
39 | + | ||
40 | + | ||
20 | 41 | ||
21 | } | 42 | } |