Java mail enviar formulario [RESOLVIDO]

8 respostas
dcorteztec

bom dia tenho uma jsp que esta enviando um formulário quando envio esta dando esse erro
javax.mail.MessagingException: Could not connect to SMTP host: smtp.mail.com.br, port: 25;
nested exception is:
java.net.ConnectException: Connection refused: connect

eu sei que erro é de porta e de autenticação mas o problema que eu não sei por isso na jsp.
<%@ page import="java.util.Properties"%>  
<%@ page import="javax.mail.*"%>  
<%@ page import="javax.mail.internet.*"%>  
<%  
String smtphost = "smtp.nossatv.tv.br";  
InternetAddress remetente = new   
 //Este email deve ser válido e existir como conta de email para o domí nio  
InternetAddress(request.getParameter("de"));  
InternetAddress destinatario = new InternetAddress("[email removido]");  
String assunto  = request.getParameter("assunto");  
String conteudo = request.getParameter("mensagem");  
  
Properties p = new Properties();  
p.put ("mail.smtp.host", smtphost);  
p.put("mail.stmp.port", "587");  
Session email = Session.getInstance(p, null);  
MimeMessage msg = new MimeMessage(email);  
  
msg.setFrom(remetente);  
msg.setRecipient(Message.RecipientType.TO, destinatario);  
msg.setSubject(assunto);  
msg.setContent(conteudo,"text/html");  
msg.saveChanges();  
  
Transport transport = email.getTransport("smtp");  
transport.connect(smtphost,"","");
transport.sendMessage(msg, msg.getAllRecipients());  
transport.close();  
%>

me ajudem

8 Respostas

ramaciotti

Ola dcorteztec,

me desculpe nao poder te ajudar com a sua JSP, mas que tal uma servlet funcional???

aí brother…

package br.com.camptech.javaMail;

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class EmailServlet extends HttpServlet {

        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession sessao = request.getSession();
        String nome = request.getParameter("nome");
        String email = request.getParameter("email_form");
        String fone = request.getParameter("fone");
        //Aqui eu mando por setor, para dar um charme a mais no seu envio de email, mas nao é necessario
        //pode-se colocar apenas o email para onde sera enviado...
        String setor = request.getParameter("setor");
        String mensagem = request.getParameter("mensagem");
        //Para validar o email utilizo o pattern e o matcher
        Pattern p = Pattern.compile("^[\\w-]+(\\.[\\w-]+)*@([\\w-]+\\.)+[a-zA-Z]{2,7}$");
        Matcher m = p.matcher(email);
        if (!m.find()) {
            //Se caso o email nao for valido seto uma mensagem na sessao com o erro
            sessao.setAttribute("mensagem", "1");
        } else {
            try {
                //Aqui eu defino para qual setor vai, lembrando que nao eé necessário....
                String to = setor;
                //Aqui o nome do provedor de quem vai mandar....
                String from = "[email removido]";
                Properties props = new Properties();
                props.put("smtp.provedor.com.br", "nome do provedor");
                Session session = Session.getInstance(props, null);
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress(from));
                Address toAddress = new InternetAddress(to);
                message.addRecipient(Message.RecipientType.TO, toAddress);
                //Aqui defino o assunto
                message.setSubject("Contato do Site");
                //Aqui defino o corpo da mensagem com os parametros envioados pela pagina....
                message.setContent("Nome: " + nome + "<br>" +
                        "Telefone: " + fone + "<br>" +
                        "Email: " + email + "<br>" +
                        "Mensagem: " + mensagem, "text/html");
                Transport.send(message);
                sessao.setAttribute("mensagem", "2");
            } catch (MessagingException e) {
                sessao.setAttribute("mensagem", "3");
            }
        }
        response.sendRedirect("index.jsp");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}

DETALHE: Não eskece de importar as classes hein…rsrsrsrs ---->(activation.jar, commons-email-1.1.jar, mail.jar)

qlq coisa estamos nessa…

Abraxxxxx e fica com DEUS!

dcorteztec

O problema que eu quero enviar um formulário, eu não conheço muito javamail, vlw pela ajuda

ramaciotti

Opa brother…

c o problema é conhecimento, fica tranquilo que posso te ajudar com isso…alias…eu ja camelei com isto tbm…

da uma olhada denovo no meu tópico, que eu acabei de modificar para um melhor entendimento…

vlw…

c caso precisar pode perguntar…

abraxxxxx…

fika com DEUS…

dcorteztec
ai dei uma mexida na jsp com ajuda do meu amigo ramaciotti agora ta dando esse erro Sending failed; nested exception is: class javax.mail.AuthenticationFailedException
<%@ page
	import="java.util.Properties,javax.mail.*,javax.mail.internet.*,javax.activation.*,java.io.*,javax.servlet.*,javax.servlet.http.*"%>
<%
		try {

		String to = "[email removido]";
		String from = request.getParameter("de");
		String SMTP_PORT = "587";
		Properties props = new Properties();
		props.put("mail.smtp.host", "smtp.servidor.com.br");
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.port", SMTP_PORT);
		
		
		Session sessao = Session.getInstance(props);
		sessao.setDebug(true);
        sessao.setPasswordAuthentication(new URLName("smtp.servidor.com.br"), new 
        PasswordAuthentication("[email removido]","senha"));
		MimeMessage message = new MimeMessage(sessao);

		message.setFrom(new InternetAddress(from));
		Address toAddress = new InternetAddress(to);
		message.addRecipient(Message.RecipientType.TO, toAddress);

		message.setSubject(request.getParameter("assunto"));
		message.setText(request.getParameter("mensagem"));

		Transport.send(message);
		
		out.println("<br><br><br>");
		out.println("<html>");
		out.println("<div align=center>");
		out.println("<body>");
		out
		.println("Sua mensagem foi enviada com sucesso.<p>Em breve responderemos, Obrigado!");
		out.println("</body>");
		out.println("</html>");
	} catch (MessagingException e) {
		out
		.println("Email nao pode ser enviado! Verifique se preencheu os campos corretamente! "
				+ e.getMessage());
	}
%>
ramaciotti

Aih brother…

vamo devagar q td vai da certo…

da uma olhada aki: http://www.guj.com.br/posts/list/62996.java

c nao ajudar aih vc me fala a gnt tenta mais…

vlw???

abraxxxxxx…

fica com DEUS.

dcorteztec

funcionou o problema tava no servidor interno aki da empresa depois que coloquei as configurações do meu gmail foi na boa
ramaciotti vlw pela ajuda foi de grande proveito tecnico.

ramaciotti

Entao beleza…

Nao eskeça de mudar o assunto do tópico para [color=blue]java mail enviar formulario - [RESOLVIDO][/color]

Abraxxxx

fica com DEUS

rbortolon

Olá ramaciotti e a todos,

Postei em outro tópico (http://www.guj.com.br/java/87637-api-java-mail—usando-o-gmaill/7) uma dúvida a respeito do processo de envio de mensagens. O meu problema é o seguinte: ao realizar os testes com o seu exemplo e vários, as mensagens chegam para o e-mail destino porém o from chega com o mesmo endereço do destino. Não entendo no que estou errando. No log com o debug do envio consta o seguinte:

...
EHLO igoPC
...
DEBUG SMTP: use8bit false
MAIL FROM:&lt;[email removido]&gt;
250 2.1.0 OK n27sm1055114yhe.18
RCPT TO:&lt;[email removido]&gt;
250 2.1.5 OK n27sm1055114yhe.18
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   [email removido]
DATA
354  Go ahead n27sm1055114yhe.18
Date: Thu, 1 Sep 2011 21:24:08 -0300 (BRT)
From: [email removido]
To: [email removido]
Message-ID: &lt;18647665.0.1314923053531.JavaMail.Rodrigo@igoPC&gt;
Subject: =?ISO-8859-1?Q?RECLAMA=C7=C3O_-_Rodrigo_Teste?=
MIME-Version: 1.0
Content-Type: text/HTML; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Esta =E9 uma mensagem teste reclama=E7=E3o.
.
250 2.0.0 OK [telefone removido] n27sm1055114yhe.18
QUIT
221 2.0.0 closing connection n27sm1055114yhe.18
&lt;center&gt;&lt;h2&gt;email enviado com sucesso!!&lt;/h2&gt;&lt;/center&gt;

Porém quando vou visualizar a mensagem no e-mail <[email removido]>, aparece como remetente ele mesmo.

Header da mensagem no G-mail :

de [email removido]
para [email removido]
data 1 de setembro de 2011 21:24
assunto RECLAMAÇÃO - Rodrigo Teste

Abaixo o método que utilizei como teste (retirei os parâmetros e atribui direto os valores para um teste rápido)

public String sendMail () throws AddressException, MessagingException {  
	     
	      Properties props = System.getProperties();  
	      /*props.put("mail.smtp.host", mailServer); 
	      props.put("mail.smtp.auth", "true"); 
	      props.put("mail.smtp.port", "587");*/  
	      //testes  
	      props.put ("mail.smtp.host", "smtp.gmail.com" );   
	      props.put("mail.smtp.auth", "true");   
	      props.put("mail.debug", "true");   
	      props.put("mail.smtp.debug", "true");   
	      props.put("mail.mime.charset", "ISO-8859-1");   
	      props.put("mail.smtp.port", "465");   
	      props.put ("mail.smtp.starttls.enable", "true");   
	      props.put ("mail.smtp.socketFactory.port", "465");   
	      props.put ("mail.smtp.socketFactory.fallback", "false");   
	      props.put ("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  
	        
	      Session session = Session.getDefaultInstance(props);//recebe props  
	                 
	      InternetAddress destinatario = new InternetAddress ("[email removido]");  
	      InternetAddress remetente = new InternetAddress ("[email removido]");  
	  
	      Message msg = new MimeMessage(session);  
	      msg.setSentDate(new Date());//novo  
	      msg.setFrom(remetente);  
	      msg.setRecipient( Message.RecipientType.TO, destinatario );  
	      msg.setSubject ("RECLAMAÇÃO - Rodrigo Teste");  
	      msg.setContent ("Esta é uma mensagem teste reclamação.", "text/HTML");  
	     
	      Transport transport = session.getTransport("smtp");  
	      transport.connect("smtp.gmail.com", "contato.queroinfo" ,"minhasenha");  
	      msg.saveChanges();  
	      transport.sendMessage(msg, msg.getAllRecipients());  
	      transport.close();  
	      return  "&lt;center&gt;&lt;h2&gt;email enviado com sucesso!!&lt;/h2&gt;&lt;/center&gt;";  
	   }

Grato,
Rodrigo Bortolon

Criado 14 de setembro de 2009
Ultima resposta 1 de set. de 2011
Respostas 8
Participantes 3