Commit 6d8ad5293ca2aeef9fcccb3c13b1109a7c2c132c
1 parent
a1c874d3
Exists in
master
Página de contato e envio de email.
Showing
6 changed files
with
234 additions
and
27 deletions
Show diff stats
WebContent/WEB-INF/jsp/contato/contato.jsp
@@ -6,6 +6,16 @@ | @@ -6,6 +6,16 @@ | ||
6 | <t:baseLayout> | 6 | <t:baseLayout> |
7 | <jsp:body> | 7 | <jsp:body> |
8 | 8 | ||
9 | + <div> | ||
10 | + <c:if test="${not empty mensagem}"> | ||
11 | + <label id="tituloAvisos" for="mensagem_${error.campo}">Foram encontrados os seguintes erros:</label> | ||
12 | + <c:forEach items="${mensagem}" var="error"> | ||
13 | + <div class="alinName"><a id="mensagemErroCampoVazio_${error.campo}" href="#${error.campo}">${error.mensagem}</a></div> | ||
14 | + <br/> | ||
15 | + </c:forEach> | ||
16 | + </c:if> | ||
17 | + </div> | ||
18 | + | ||
9 | <div class="funcionalidades"> | 19 | <div class="funcionalidades"> |
10 | <ul class="breadcrumb"> | 20 | <ul class="breadcrumb"> |
11 | <li> | 21 | <li> |
WebContent/WEB-INF/tags/baseLayout.tag
@@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
52 | </li> | 52 | </li> |
53 | 53 | ||
54 | <li id="portalservicos-contato" class="portalservicos-item"> | 54 | <li id="portalservicos-contato" class="portalservicos-item"> |
55 | - <a href="${pageContext.request.contextPath}/contato-site" id="contatoLink">Contato</a> | 55 | + <a href="${pageContext.request.contextPath}/contato/contato-site" id="contatoLink">Contato</a> |
56 | </li> | 56 | </li> |
57 | </ul> | 57 | </ul> |
58 | </nav> | 58 | </nav> |
src/br/com/controller/QuestionarioController.java
@@ -68,8 +68,7 @@ public class QuestionarioController { | @@ -68,8 +68,7 @@ public class QuestionarioController { | ||
68 | dtInicioQuestionario = prop.getProperty("dataInicio"); | 68 | dtInicioQuestionario = prop.getProperty("dataInicio"); |
69 | dtFimQuestionario = prop.getProperty("dataFim"); | 69 | dtFimQuestionario = prop.getProperty("dataFim"); |
70 | 70 | ||
71 | - } catch (IOException e) { | ||
72 | - // TODO Auto-generated catch block | 71 | + } catch (IOException e) { |
73 | e.printStackTrace(); | 72 | e.printStackTrace(); |
74 | } | 73 | } |
75 | 74 | ||
@@ -113,7 +112,7 @@ public class QuestionarioController { | @@ -113,7 +112,7 @@ public class QuestionarioController { | ||
113 | 112 | ||
114 | 113 | ||
115 | respSendEmail = | 114 | respSendEmail = |
116 | - envioEmailSemAutenticacao.sendMail(email.getFrom(), contato.getEmail(), | 115 | + envioEmailSemAutenticacao.sendMailComCopia(email.getFrom(), contato.getEmail(), |
117 | StringHelper.convertFromUTF8(contato.getAssunto()), | 116 | StringHelper.convertFromUTF8(contato.getAssunto()), |
118 | StringHelper.convertFromUTF8(contato.getMensagem()), email.getAuth(), | 117 | StringHelper.convertFromUTF8(contato.getMensagem()), email.getAuth(), |
119 | email.getAuthUser(), email.getAuthPass(), email.getCopiaEmailTo()); | 118 | email.getAuthUser(), email.getAuthPass(), email.getCopiaEmailTo()); |
src/br/com/controller/contatoController.java
1 | package br.com.controller; | 1 | package br.com.controller; |
2 | 2 | ||
3 | -import javax.servlet.ServletContext; | ||
4 | - | ||
5 | -import br.com.controller.contatoController; | ||
6 | -import br.com.model.entity.Contato; | ||
7 | -import br.com.model.utilities.StringHelper; | ||
8 | -//import br.com.model.utilities.Validate; | ||
9 | -import br.com.caelum.vraptor.Path; | ||
10 | -import br.com.caelum.vraptor.Resource; | ||
11 | -import br.com.caelum.vraptor.Result; | ||
12 | -import br.com.caelum.vraptor.Validator; | ||
13 | -import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder; | ||
14 | - | ||
15 | import java.io.UnsupportedEncodingException; | 3 | import java.io.UnsupportedEncodingException; |
16 | import java.net.MalformedURLException; | 4 | import java.net.MalformedURLException; |
5 | +import java.util.ArrayList; | ||
6 | +import java.util.List; | ||
17 | 7 | ||
18 | import javax.servlet.ServletContext; | 8 | import javax.servlet.ServletContext; |
19 | 9 | ||
10 | +import org.apache.commons.mail.EmailException; | ||
11 | + | ||
12 | + | ||
13 | + | ||
14 | +// import br.com.model.utilities.Validate; | ||
20 | import br.com.caelum.vraptor.Path; | 15 | import br.com.caelum.vraptor.Path; |
21 | import br.com.caelum.vraptor.Post; | 16 | import br.com.caelum.vraptor.Post; |
22 | import br.com.caelum.vraptor.Resource; | 17 | import br.com.caelum.vraptor.Resource; |
23 | import br.com.caelum.vraptor.Result; | 18 | import br.com.caelum.vraptor.Result; |
24 | import br.com.caelum.vraptor.Validator; | 19 | import br.com.caelum.vraptor.Validator; |
25 | -import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder; | 20 | +import br.com.caelum.vraptor.validator.ValidationMessage; |
21 | +import br.com.model.entity.Contato; | ||
22 | +import br.com.model.entity.EnvioEmailSemAutenticacao; | ||
23 | +import br.com.model.utilities.Email; | ||
24 | +import br.com.model.utilities.StringHelper; | ||
25 | +import br.com.util.Validacao; | ||
26 | 26 | ||
27 | @Resource | 27 | @Resource |
28 | +@Path("/contato") | ||
28 | public class contatoController { | 29 | public class contatoController { |
29 | - | ||
30 | - | ||
31 | - | ||
32 | - @Path("/contato-site") | ||
33 | - public void contato(){ | ||
34 | - | ||
35 | - } | ||
36 | - | ||
37 | -} | ||
38 | \ No newline at end of file | 30 | \ No newline at end of file |
31 | + | ||
32 | + | ||
33 | + private Result result; | ||
34 | + private Validator validator; | ||
35 | + private ServletContext application; | ||
36 | + | ||
37 | + public contatoController(Result result, Validator validator, ServletContext application) { | ||
38 | + | ||
39 | + this.result = result; | ||
40 | + this.validator = validator; | ||
41 | + this.application = application; | ||
42 | + | ||
43 | + } | ||
44 | + | ||
45 | + | ||
46 | + @Path("/contato-site") | ||
47 | + public void contato() { | ||
48 | + | ||
49 | + } | ||
50 | + | ||
51 | + @Post("/confirmacao") | ||
52 | + public void confirmation(Contato contato){ | ||
53 | + | ||
54 | + Validacao validate = new Validacao(); | ||
55 | + | ||
56 | + List<Validacao> mensagens = new ArrayList<Validacao>(); | ||
57 | + | ||
58 | + mensagens = validate.ValidarContato(contato); | ||
59 | + | ||
60 | + if(mensagens.size() > 0) | ||
61 | + { | ||
62 | + result.include("mensagens", mensagens); | ||
63 | + this.validator.add(new ValidationMessage("", "")); | ||
64 | + this.validator.onErrorUsePageOf(contatoController.class).contato(); | ||
65 | + | ||
66 | + }else | ||
67 | + { | ||
68 | + String respSendEmail; | ||
69 | + | ||
70 | + Email email = new Email(this.application.getRealPath("") + "/WEB-INF/mail.properties"); | ||
71 | + | ||
72 | + EnvioEmailSemAutenticacao envioEmailSemAutenticacao = new EnvioEmailSemAutenticacao(email.getHost(), Integer.toString(email.getPort())); | ||
73 | + | ||
74 | + respSendEmail = envioEmailSemAutenticacao.sendMailSemCopia(contato.getEmail(),email.getTo(), "Formulário Circunstanciado - " + StringHelper.convertFromUTF8(contato.getAssunto()), StringHelper.convertFromUTF8(contato.getMensagem()),email.getAuth(), email.getAuthUser(), email.getAuthPass()); | ||
75 | + | ||
76 | + | ||
77 | + /*String respSendEmail = email.sendEmail("Contato","govbr@planejamento.gov.br", contato.getNome(),contato.getEmail(),StringHelper.convertFromUTF8(contato.getAssunto()), | ||
78 | + StringHelper.convertFromUTF8(contato.getMensagem()), true);*/ | ||
79 | + | ||
80 | + if (respSendEmail.equals("")) { | ||
81 | + result.include("mensagem", "Mensagem enviada com Sucesso"); | ||
82 | + result.include("status", "success"); | ||
83 | + | ||
84 | + } else { | ||
85 | + result.include("mensagem", | ||
86 | + "N�o foi poss�vel enviar a mensagem! Ocorreu o problema: " + respSendEmail); | ||
87 | + result.include("status", "error"); | ||
88 | + } | ||
89 | + this.result.redirectTo(contatoController.class).contato(); | ||
90 | + } | ||
91 | + } | ||
92 | +} |
src/br/com/model/entity/EnvioEmailSemAutenticacao.java
@@ -28,8 +28,83 @@ public class EnvioEmailSemAutenticacao { | @@ -28,8 +28,83 @@ public class EnvioEmailSemAutenticacao { | ||
28 | this.mailSMTPServer = mailSMTPServer; | 28 | this.mailSMTPServer = mailSMTPServer; |
29 | this.mailSMTPServerPort = mailSMTPServerPort; | 29 | this.mailSMTPServerPort = mailSMTPServerPort; |
30 | } | 30 | } |
31 | + | ||
32 | + public String sendMailSemCopia(String from, String to, String subject, | ||
33 | + String message, String comAutenticacao, String authuser, | ||
34 | + String authpass) { | ||
35 | + | ||
36 | + Properties props = new Properties(); | ||
37 | + String retorno = ""; | ||
38 | + | ||
39 | + props.put("mail.transport.protocol", "smtp"); // define protocolo de | ||
40 | + // envio como SMTP | ||
41 | + props.put("mail.smtp.starttls.enable", "true"); | ||
42 | + props.put("mail.smtp.host", mailSMTPServer); // server SMTP do GMAIL | ||
43 | + props.put("mail.smtp.auth", comAutenticacao); // ativa autenticacao | ||
44 | + props.put("mail.smtp.user", from); // usuario ou seja, a conta que esta | ||
45 | + // enviando o email (tem que ser do | ||
46 | + // GMAIL) | ||
47 | + props.put("mail.debug", "false"); | ||
48 | + props.put("mail.smtp.port", mailSMTPServerPort); // porta | ||
49 | + | ||
50 | + | ||
51 | + // Cria um autenticador que sera usado a seguir | ||
52 | + SimpleAuth auth = null; | ||
53 | + auth = new SimpleAuth(authuser, authpass); | ||
54 | + // Session - objeto que ira realizar a conex�o com o servidor | ||
55 | + /* | ||
56 | + * Como h� necessidade de autentica��o � criada uma autenticacao que � | ||
57 | + * responsavel por solicitar e retornar o usu�rio e senha para | ||
58 | + * autentica��o | ||
59 | + */ | ||
60 | + Session session = Session.getDefaultInstance(props, auth); | ||
61 | + session.setDebug(true); // Habilita o LOG das a��es executadas durante o | ||
62 | + // envio do email | ||
63 | + // Objeto que cont�m a mensagem | ||
64 | + Message msg = new MimeMessage(session); | ||
65 | + try { | ||
66 | + | ||
67 | + | ||
68 | + // Setando o destinat�rio | ||
69 | + msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); | ||
70 | + | ||
71 | + // Setando a origem do email | ||
72 | + msg.setFrom(new InternetAddress(from)); | ||
73 | + // Setando o assunto | ||
74 | + msg.setSubject(subject); | ||
75 | + // Setando o conte�do/corpo do email | ||
76 | + msg.setContent(message, "text/html; charset=utf-8"); | ||
77 | + | ||
78 | + } catch (Exception e) { | ||
79 | + retorno = e.getMessage(); | ||
80 | + System.out.println(">> Erro: Completar Mensagem"); | ||
81 | + e.printStackTrace(); | ||
82 | + return retorno; | ||
83 | + } | ||
84 | + // Objeto encarregado de enviar os dados para o email | ||
85 | + Transport tr; | ||
86 | + try { | ||
87 | + tr = session.getTransport("smtp"); // define smtp para transporte | ||
88 | + /* | ||
89 | + * 1 - define o servidor smtp 2 - seu nome de usuario do gmail 3 - | ||
90 | + * sua senha do gmail | ||
91 | + */ | ||
92 | + tr.connect(mailSMTPServer, authuser, authpass); | ||
93 | + msg.saveChanges(); // don't forget this | ||
94 | + // envio da mensagem | ||
95 | + tr.sendMessage(msg, msg.getAllRecipients()); | ||
96 | + | ||
97 | + tr.close(); | ||
98 | + | ||
99 | + } catch (Exception e) { | ||
100 | + // TODO Auto-generated catch block | ||
101 | + System.out.println(">> Erro: Envio Mensagem"); | ||
102 | + retorno = e.getMessage(); | ||
103 | + } | ||
104 | + return retorno; | ||
105 | +} | ||
31 | 106 | ||
32 | - public String sendMail(String from, String to, String subject, | 107 | + public String sendMailComCopia(String from, String to, String subject, |
33 | String message, String comAutenticacao, String authuser, | 108 | String message, String comAutenticacao, String authuser, |
34 | String authpass, String copiaEmailTo) { | 109 | String authpass, String copiaEmailTo) { |
35 | 110 |
src/br/com/util/Validacao.java
@@ -2,8 +2,14 @@ package br.com.util; | @@ -2,8 +2,14 @@ package br.com.util; | ||
2 | 2 | ||
3 | import java.util.ArrayList; | 3 | import java.util.ArrayList; |
4 | import java.util.List; | 4 | import java.util.List; |
5 | +import java.util.regex.Matcher; | ||
6 | +import java.util.regex.Pattern; | ||
5 | 7 | ||
8 | + | ||
9 | + | ||
10 | +import br.com.caelum.vraptor.validator.ValidationMessage; | ||
6 | import br.com.dao.HashDao; | 11 | import br.com.dao.HashDao; |
12 | +import br.com.model.entity.Contato; | ||
7 | import br.com.model.entity.Formulario; | 13 | import br.com.model.entity.Formulario; |
8 | import br.com.model.entity.Questionario; | 14 | import br.com.model.entity.Questionario; |
9 | 15 | ||
@@ -785,4 +791,67 @@ public class Validacao { | @@ -785,4 +791,67 @@ public class Validacao { | ||
785 | return this; | 791 | return this; |
786 | } | 792 | } |
787 | 793 | ||
794 | + public List<Validacao> ValidarContato(Contato contato) { | ||
795 | + boolean isValido = true; | ||
796 | + | ||
797 | + Validacao validacao; | ||
798 | + | ||
799 | + List<Validacao> mensagens = new ArrayList<Validacao>(); | ||
800 | + | ||
801 | + if (contato.getNome() == null) { | ||
802 | + | ||
803 | + validacao = new Validacao(); | ||
804 | + | ||
805 | + validacao.setCampo("nome"); | ||
806 | + validacao.setMensagem("Favor preencher o campo NOME!"); | ||
807 | + mensagens.add(validacao); | ||
808 | + | ||
809 | + } else if (contato.getNome().length() > 200) { | ||
810 | + validacao = new Validacao(); | ||
811 | + validacao.setCampo("nome"); | ||
812 | + validacao.setMensagem("O campo NOME aceita até 200 caracteres."); | ||
813 | + mensagens.add(validacao); | ||
814 | + | ||
815 | + } | ||
816 | + | ||
817 | + if (contato.getEmail() == null) { | ||
818 | + validacao = new Validacao(); | ||
819 | + validacao.setCampo("email"); | ||
820 | + validacao.setMensagem("Favor preencher o campo E-MAIL!"); | ||
821 | + mensagens.add(validacao); | ||
822 | + | ||
823 | + } else { | ||
824 | + Pattern p = Pattern.compile("^[\\w-]+(\\.[\\w-]+)*@([\\w-]+\\.)+[a-zA-Z]{2,7}$"); | ||
825 | + Matcher m = p.matcher(contato.getEmail()); | ||
826 | + if (!m.find()) { | ||
827 | + validacao = new Validacao(); | ||
828 | + validacao.setCampo("email"); | ||
829 | + validacao.setMensagem("E-MAIL considerado inválido!"); | ||
830 | + mensagens.add(validacao); | ||
831 | + } | ||
832 | + } | ||
833 | + | ||
834 | + if (contato.getAssunto() == null) { | ||
835 | + validacao = new Validacao(); | ||
836 | + validacao.setCampo("assunto"); | ||
837 | + validacao.setMensagem("Favor escolher uma das opções no campo ASSUNTO!"); | ||
838 | + mensagens.add(validacao); | ||
839 | + | ||
840 | + } | ||
841 | + | ||
842 | + if (contato.getMensagem() == null) { | ||
843 | + validacao = new Validacao(); | ||
844 | + validacao.setCampo("mensagem"); | ||
845 | + validacao.setMensagem("Favor preencher o campo MENSAGEM!"); | ||
846 | + mensagens.add(validacao); | ||
847 | + | ||
848 | + } else if (contato.getMensagem().length() > 500) { | ||
849 | + validacao = new Validacao(); | ||
850 | + validacao.setCampo("mensagem"); | ||
851 | + validacao.setMensagem("O campo MENSAGEM aceita até 500 caracteres."); | ||
852 | + mensagens.add(validacao); | ||
853 | + } | ||
854 | + | ||
855 | + return mensagens; | ||
856 | + } | ||
788 | } | 857 | } |