Email JSP erro java.lang.NoClassDefFoundError: javax/mail/Authenticator

Boa noite,
Estou fazendo um programa em JSP que usa servlet que deveria enviar um email automatico para emails recebidos via uma pagina jsp
Ja inclui as jars activation.jar mail.jar e servlet.jar
Mas o seguinte erro aparece

exception 

javax.servlet.ServletException: Error instantiating servlet class fiap.Email
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
	org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	java.lang.Thread.run(Unknown Source)


root cause 

java.lang.NoClassDefFoundError: javax/mail/Authenticator
	java.lang.Class.getDeclaredConstructors0(Native Method)
	java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	java.lang.Class.getConstructor0(Unknown Source)
	java.lang.Class.newInstance0(Unknown Source)
	java.lang.Class.newInstance(Unknown Source)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
	org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	java.lang.Thread.run(Unknown Source)


root cause 

java.lang.ClassNotFoundException: javax.mail.Authenticator
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1362)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208)
	java.lang.ClassLoader.loadClassInternal(Unknown Source)
	java.lang.Class.getDeclaredConstructors0(Native Method)
	java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	java.lang.Class.getConstructor0(Unknown Source)
	java.lang.Class.newInstance0(Unknown Source)
	java.lang.Class.newInstance(Unknown Source)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
	org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	java.lang.Thread.run(Unknown Source)

Alguem tem ideia de como resolver isso?

Caso seja util segue o codigo usado no servlet

package chucknorris;

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.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.Authenticator;   
import javax.mail.PasswordAuthentication; 
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;

public class Email extends HttpServlet{
	String para;
	public void doGet(HttpServletRequest request,
			HttpServletResponse response)
	throws ServletException, IOException {
		para = request.getParameter("Email");
		Email e = new Email();
		e.Email(de, para, assunto, mensagem);
		}
	
		private String mailSMTPServer= "smtp.gmail.com";
		private String mailSMTPServerPort ="465";
		
		
		public void Email(String de,String para, String assunto, String mensagem){
			Properties p = new Properties();
			
			//Parametros do email
			de = "remetende";
			para = "destinatario";
			assunto = "Teste de Email automatico!";
			mensagem = "Teste teste teste";
			
			//inicio de configuracao de proxy, so necessario se proxy
			//p.setProperty("proxySet", "true");
			//p.setProperty("socksProxyHost", "DIGITAR IP DE SERVIDOR PROXY");
			//p.setProperty("socksProxyPort", "DIGITAR PORTA DO PROXY");
			
			p.put("mail.transport.protocol", "smtp");
			p.put("mail.smtp.starttls.enable", "true");
			p.put("mail.smtp.host", mailSMTPServer);
			p.put("mail.smtp.auth", "true");
			p.put("mail.user.user", de);
			p.put("mail.debug", "true");
			p.put("mail.smtp.port", mailSMTPServerPort);
			p.put("mail.smtp.socketFactory.port", mailSMTPServerPort);
			p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
			p.put("mail.smtp.socketFactory.fallback", "false");
			
			SimpleAuth auth = null;    
			auth = new SimpleAuth ("conta a ser usada", "senha");
			
			Session session = Session.getDefaultInstance(p, auth);
			session.setDebug(true); 
			
			Message msg = new MimeMessage(session);
			
			try{
				msg.setRecipient(Message.RecipientType.TO, new InternetAddress(para));
				msg.setFrom(new InternetAddress(de));
				msg.setSubject(assunto);
				msg.setContent(mensagem,"text/plain");				
			}
			catch(Exception e){
				System.out.println(e.getMessage());   
			}
			
			Transport t;
			try{
				t = session.getTransport("smtp"); 
				t.connect(mailSMTPServer, "remetende", "senha");
				msg.saveChanges();
				t.sendMessage(msg, msg.getAllRecipients());   
	            t.close();   
			}
			catch(Exception e){
				System.out.println(e.getMessage());
			}			
		}
}	

Salve

Não tenho o domínio da api de email da Sun, sempre usei o pacote mail do projeto Apache Commons, se quiseres tentar: http://commons.apache.org/email

Opa Obrigado pela sugestão!!!
Vc teria um codigo para exemplificar como essa pacote funciona?
Abraço

Primeiro tens que baixar aqui: http://commons.apache.org/downloads/download_email.cgi e adicionar o jar commons-email. Como o commonse-mail é uma api simplificada do sun javamail também tens que manter o jar do sun javamail, além de claro, estiveres usando Java 1.5, o pacote Activation.

Aqui está um exemplo simples:

SimpleEmail email = new SimpleEmail();
email.setHostName("localhost"); //aqui vai o provedor smtp
email.addTo("fulano_de_tal@provedorqualquer.com.br");
email.setFrom("eu@meuprovedor.com.br");
email.setSubject("Qualquer assunto");
email.setMsg("Mensagem qualquer");
email.send();

Para alterar a porta do smtp use: email.setSmtpPort(int port)

Pessoalmente acho o Commons E-mail ótimo para “matar mosquitos”, o que tenho feito normalmente, mas talvez para algo mais especializado, complexo, pode ser necessário usar o JavaMail.

Cara,

Está faltando um jar ai na sua brincadeira… Olha o log:

java.lang.ClassNotFoundException: javax.mail.Authenticator

Olha essa URL:

http://www.java2s.com/Code/Jar/glassfish/Downloadmailapijar.htm

Olá amigos, re-aproveitando o tópico, estou enfrentando o mesmo erro que o amigo Chuck.

Quando compilo o projeto pela IDE ele funciona normalmente, porém quando tento executar a partir do arquivo JAR gerado, me deparo com este erro.

Alguém poderia me dar alguma dica de como solucionar este problema?

Obrigado.

Voce sabe que o jar tem que estar na lib nao apenas refenciado por que se nao dá este erro mesmo?

Sim amigo, a jar está na lib, e o classpath está devidamente configurado.

Olá amigo, consegui resolver o problema, os arquivos jar estavam na pasta lib do jdk1.6.0_14, porém o programa só funcionou quando os copiei para lib/ext da minha pasta jre6.

Obrigado.