Java mail enviar formulario [RESOLVIDO]

8 respostas
D

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

R

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!

D

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

R

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…

D
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());
	}
%>
R

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.

D

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.

R

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

R

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