Commit 6d8ad5293ca2aeef9fcccb3c13b1109a7c2c132c

Authored by gibransodre
1 parent a1c874d3
Exists in master

Página de contato e envio de email.

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&eacute; 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&aacute;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&ccedil;&otilde;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&eacute; 500 caracteres.");
  852 + mensagens.add(validacao);
  853 + }
  854 +
  855 + return mensagens;
  856 + }
788 857 }
... ...