Commit 2764761edc73ea2db57c1e03290cb10c63b2318a

Authored by gibransodre
1 parent 592200e2
Exists in master

Correção da formatação de envio de email.

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 }