Formulario para enviar email - Servlet

2 respostas
tiagofrutuoso

Preciso de uma ajuda para enviar os dados de um formulario no meu site para um email do BRTURBO, segue abaixo minhas paginas jsp e os servlets:

contato.jsp

<form name="formContato" method="post">
  <div id="dvContato" align="center">
    <ul>
	  <table id="tblContato">
		<tr> 
			<th colspan="2">Preencha todas as informa&ccedil;&otilde;es</th>
		</tr>
		<tr> 
			<td>
				<label class="label">Nome:
					<span class="small">Digite seu nome</span>
				</label></td>
			<td> 
			   <input class="span" name="txtNome" type="text" size="33" maxlength="1000">
                        </td>
		</tr>
		<tr> 
			<td>
			    <label>E-mail:
					<span class="small">Digite seu email</span>
				</label>
			 </td>
			<td>
			   <input class="span" name="txtEmail" type="text" size="33" maxlength="1000">
			</td>
		</tr>
		<tr> 
			<td>
			   <label>Mensagem:
					<span class="small">Max. 200 caracteres</span>
				</label>
			</td>
			<td>
			    <textarea class="span" name="txtMensagem" cols="30" rows="4" ></textarea>
			</td>
		</tr>
       </table>
       <div id="dvBotoes" align="center">
		  <ul>
		    <input class="botao2" name="btnEnviar" type="submit" value="Enviar" style="width:130px; height: 20px;" onclick="EnviarContato();">
		    <input class="botao2" name="btnLimpar" type="reset"" value="Limpar" style="width:130px; height: 20px;" onclick="LimparContato();">
		 </ul>
	   </div>
	</ul>
</div>
</form>

Quando clica no Botão enviar vai para o servlet abaixo:

MailCheck.java

package br.com.tjttecnologia.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.tjttecnologia.util.Mail;
import br.com.tjttecnologia.util.Utility;

public class MailCheck extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
	   static final long serialVersionUID = 1L;

		protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		      response.setContentType("text/html");		
		      PrintWriter out = response.getWriter();	 
		      
		      Mail mail = new Mail();

			  String Nome = request.getParameter("txtNome");
		      String Email = request.getParameter("txtEmail");	 
		      String Mensagem = request.getParameter("txtMensagem");     

		      if ( Nome.length() > 0 &&  Nome != null && Email.length() > 0 && Email != null && Mensagem.length() > 0 && Mensagem != null){
		              if(mail.SendMessage(Utility.getEmailTo(),"Contato TJT","<b>Mensagem enviada por:</b>" + Nome + "<br><b>Email:</b> " + Email + "<br><b>Mensagem</b>:" + Mensagem) == 1 ){
		            	  out.println("<script>alert('Mensagem enviada com sucesso')</script>");            	  
		              }else{
		            	  out.println("<script>alert('A mensagem não foi enviada com sucesso.')</script>"); 
		              }
	          }else{
			       out.println("<script>alert('Preencha todos os campos')</script>");   
		      }   
		       	       
		      response.sendRedirect("admin.login.logic"); 	
		}   	  	    
	}

o Mail que esta dentro dessa classe segue abaixo:

Mail.java

package br.com.tjttecnologia.util;

import java.util.Date;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

 public class Mail {

		public Mail(){}

	    private  String _emailFromAddress = "";
	    private  String _senhaFrom = "";
	    private int result=0;
	    
	    public int SendMessage(String sendTo, String emailSubjectTxt, String emailMsgTxt){
	        _emailFromAddress = Utility.getEmail();
	        _senhaFrom = Utility.getPassword();
	        Properties props = new Properties();         
	        props.put ("mail.smtp.host", "smtp.brturbo.com.br"); 
	        props.put("mail.smtp.auth", "true");
	        props.put("mail.smtp.port", "465");
	              
	        Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {  
	            String email = _emailFromAddress;
	            String senha = _senhaFrom;
	            protected PasswordAuthentication getPasswordAuthentication() {
	                return new PasswordAuthentication(email, senha); 
	            } 
	        }); 

	        session.setDebug(true);
	        Message msg = new MimeMessage(session);

	        try {
	            msg.setFrom(new InternetAddress(Utility.getEmail()));
	            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(sendTo));

	            // nao esqueca da data!  
	            // ou ira 31/12/1969 !!!  
	            msg.setSentDate(new Date());  
	            msg.setSubject(emailSubjectTxt);
	            msg.setContent(emailMsgTxt, "text/html");
	            Transport.send(msg);
	            result=1;

	        } catch (MessagingException e) {
	            System.out.println("ERRO =" + e.getMessage());
	            result=0;
	        }

	        return result;
	    }
	}

Ele fica tentando se conectar mais não consegue, será que é a BRTURBO ou eu que estou fazendo alguma coisa errada.

Agradeço desde já a ajuda para essa solução, se possivel.

Att,

Tiago Frutuoso

2 Respostas

furutani

Algum erro é exibido com no catch System.out.println(“ERRO =” + e.getMessage()); ?

tiagofrutuoso

Se eu naum definir a porta ele pega o padrão(porta 25) e o erro é o seguinte:

ERRO =Sending failed;
nested exception is:
class javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. d29sm885748and.18

Se eu definir a porta 465, é esse:

DEBUG SMTP: connected to host “smtp.brturbo.com.br”, port: 465

e fica um bom tempo e não prosegue.

Criado 21 de maio de 2009
Ultima resposta 21 de mai. de 2009
Respostas 2
Participantes 2