Erro no envio de formulário via email

Boa noite galera!

Estou desenvolvendo um site e apanhando para enviar dados de um formulário por email com JSP.

Pesquisei em alguns tópicos do fórum, mas continuo com dúvida. Estou meio perdido (completamente rsrs).

No momento em que o botão “enviar” é clicado, ocorre o seguinte erro:

java.lang.NoClassDefFoundError: javax.mail/Authenticator

*Eu baixei a versão 1.4.5 do JavaMail API

Segue minhas classes:

Enviar.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
 	<%@ page import="send.Send" %>
 	<%@ page import="send.SendEmail" %>
 	<%@ page import="send.*" %>
 	<%@ page import="javax.mail.*" %>
	<%@ page import="javax.mail.internet.*" %>
 	
 	<jsp:useBean id="send" scope="session" class="send.Send" />
 	<jsp:useBean id="sendEmail" scope="session" class="send.SendEmail" />
 	
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Envia Email</title>
</head>
<body>
	
	<%
		try{
			String nome = request.getParameter("nome");
			String email = request.getParameter("email");
			String assunto = request.getParameter("assunto");
			String mensagem = request.getParameter("mensagem");
			
			SendEmail enviar = new SendEmail();
			enviar.sendEmail(nome, email, assunto, mensagem);
			
		%>
			<p>Enviado com Sucesso!</p>
		<%	
			
		} catch(AddressException e){ %>
			<p>Endereço de e-mail inválido!</p>
		<%}
		
		catch(MessagingException e){ %>
			<p>Impossível enviar o e-mail!</p>
		<%} %>
		
	
</body>
</html>

Código do tópico - http://www.guj.com.br/java/87637-api-java-mail---usando-o-gmaill

SendEmail.java

[code]import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class SendMail {

private String mailSMTPServer;  
private String mailSMTPServerPort;  
  

SendMail() {   
    mailSMTPServer = "smtp.gmail.com";  
    mailSMTPServerPort = "465";  
}  

SendMail(String mailSMTPServer, String mailSMTPServerPort) {   
    this.mailSMTPServer = mailSMTPServer;  
    this.mailSMTPServerPort = mailSMTPServerPort;  
}  
  
public void sendMail(String from, String to, String subject, String message) {  
      
    Properties props = new Properties();    

    props.put("mail.transport.protocol", "smtp");  
    props.put("mail.smtp.starttls.enable","true");   
    props.put("mail.smtp.host", mailSMTPServer); 
    props.put("mail.smtp.auth", "true");   
    props.put("mail.smtp.user", from);   
    props.put("mail.debug", "true");  
    props.put("mail.smtp.port", mailSMTPServerPort);   
    props.put("mail.smtp.socketFactory.port", mailSMTPServerPort);   
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  
    props.put("mail.smtp.socketFactory.fallback", "false");  
        
    SimpleAuth auth = null;  
    auth = new SimpleAuth ("seuusuarioparalogin","suasenhaparalogin");  
      
    Session session = Session.getDefaultInstance(props, auth);  
    session.setDebug(true);   

    
    Message msg = new MimeMessage(session);  

    try {  
   
        msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));          
        msg.setFrom(new InternetAddress(from));             
        msg.setSubject(subject);      
        msg.setContent(message,"text/plain");  

    } catch (Exception e) {  
        System.out.println(">> Erro: Completar Mensagem");  
        e.printStackTrace();  
    }  
      
   
    Transport tr;  
    try {  
        tr = session.getTransport("smtp"); 
       
        tr.connect(mailSMTPServer, "seuusuarioparalogin", "suasenhaparalogin");  
        msg.saveChanges(); 
        tr.sendMessage(msg, msg.getAllRecipients());  
        tr.close();  
    } catch (Exception e) {  
        System.out.println(">> Erro: Envio Mensagem");  
        e.printStackTrace();  
    }  

}  

}

[/code]

SimpleAuth.java

  
class SimpleAuth extends Authenticator {  
    public String username = null;  
    public String password = null;  
  
  
    public SimpleAuth(String user, String pwd) {  
        username = user;  
        password = pwd;  
    }  
  
    protected PasswordAuthentication getPasswordAuthentication() {  
        return new PasswordAuthentication (username,password);  
    }  
}   

Obrigado.

Se alguém tiver uma outra maneira de fazer envio com JSP, um caminho sei lá… :wink:

Grato.

Este erro ocorre quando a classe procurada nao está no Classpath da aplicação.
Você colocou os jar da JavaMail Api no diretório lib?

Adicione os jars do JavaMail ao diretório WEB-INF/lib do seu projeto.

[quote=natanaelv]Este erro ocorre quando a classe procurada nao está no Classpath da aplicação.
Você colocou os jar da JavaMail Api no diretório lib?

Adicione os jars do JavaMail ao diretório WEB-INF/lib do seu projeto.[/quote]

Olá.

Sim adicionei.

Adicione os jars: mail.jar e activation.jar no WEB-INF/lib.

Se estiver usando o Maven adicione isso ao pom.xml

 &lt;dependency&gt;
        &lt;groupId&gt;javax.mail&lt;/groupId&gt;
        &lt;artifactId&gt;mail&lt;/artifactId&gt;
        &lt;version&gt;1.4.5&lt;/version&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
        &lt;groupId&gt;javax.activation&lt;/groupId&gt;
        &lt;artifactId&gt;activation&lt;/artifactId&gt;
        &lt;version&gt;1.1.1&lt;/version&gt;
    &lt;/dependency&gt;

Camarada, alguns detalhes.
1 - Embora seja possível fazer com que código java funcione em um jsp, isso não é recomendado. Prefira utilizar uma Servlet para isso.
2 - A mensagem é bem clara, o erro é quanto À disponibilidade do jar referente à autenticação no classpath. Se está usando o Tomcat, deve colocar o jar mail.jar dentro da pasta WEB-INF/lib.

Estou enviando um projeto anexo, não consegui testar, pois o proxy bloqueia requisição ao Gmail.
De qualquer forma, isto deve funcionar, talvez com algumas alterações.