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 | <t:baseLayout> |
7 | 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 | 19 | <div class="funcionalidades"> |
10 | 20 | <ul class="breadcrumb"> |
11 | 21 | <li> | ... | ... |
WebContent/WEB-INF/tags/baseLayout.tag
... | ... | @@ -52,7 +52,7 @@ |
52 | 52 | </li> |
53 | 53 | |
54 | 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 | 56 | </li> |
57 | 57 | </ul> |
58 | 58 | </nav> | ... | ... |
src/br/com/controller/QuestionarioController.java
... | ... | @@ -68,8 +68,7 @@ public class QuestionarioController { |
68 | 68 | dtInicioQuestionario = prop.getProperty("dataInicio"); |
69 | 69 | dtFimQuestionario = prop.getProperty("dataFim"); |
70 | 70 | |
71 | - } catch (IOException e) { | |
72 | - // TODO Auto-generated catch block | |
71 | + } catch (IOException e) { | |
73 | 72 | e.printStackTrace(); |
74 | 73 | } |
75 | 74 | |
... | ... | @@ -113,7 +112,7 @@ public class QuestionarioController { |
113 | 112 | |
114 | 113 | |
115 | 114 | respSendEmail = |
116 | - envioEmailSemAutenticacao.sendMail(email.getFrom(), contato.getEmail(), | |
115 | + envioEmailSemAutenticacao.sendMailComCopia(email.getFrom(), contato.getEmail(), | |
117 | 116 | StringHelper.convertFromUTF8(contato.getAssunto()), |
118 | 117 | StringHelper.convertFromUTF8(contato.getMensagem()), email.getAuth(), |
119 | 118 | email.getAuthUser(), email.getAuthPass(), email.getCopiaEmailTo()); | ... | ... |
src/br/com/controller/contatoController.java
1 | 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 | 3 | import java.io.UnsupportedEncodingException; |
16 | 4 | import java.net.MalformedURLException; |
5 | +import java.util.ArrayList; | |
6 | +import java.util.List; | |
17 | 7 | |
18 | 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 | 15 | import br.com.caelum.vraptor.Path; |
21 | 16 | import br.com.caelum.vraptor.Post; |
22 | 17 | import br.com.caelum.vraptor.Resource; |
23 | 18 | import br.com.caelum.vraptor.Result; |
24 | 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 | 27 | @Resource |
28 | +@Path("/contato") | |
28 | 29 | public class contatoController { |
29 | - | |
30 | - | |
31 | - | |
32 | - @Path("/contato-site") | |
33 | - public void contato(){ | |
34 | - | |
35 | - } | |
36 | - | |
37 | -} | |
38 | 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 | 28 | this.mailSMTPServer = mailSMTPServer; |
29 | 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 | 108 | String message, String comAutenticacao, String authuser, |
34 | 109 | String authpass, String copiaEmailTo) { |
35 | 110 | ... | ... |
src/br/com/util/Validacao.java
... | ... | @@ -2,8 +2,14 @@ package br.com.util; |
2 | 2 | |
3 | 3 | import java.util.ArrayList; |
4 | 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 | 11 | import br.com.dao.HashDao; |
12 | +import br.com.model.entity.Contato; | |
7 | 13 | import br.com.model.entity.Formulario; |
8 | 14 | import br.com.model.entity.Questionario; |
9 | 15 | |
... | ... | @@ -785,4 +791,67 @@ public class Validacao { |
785 | 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 | } | ... | ... |