Enviar email por servlet

9 respostas
M

olá, sou novo em java e servlet, e gostaria de fazer um simples formulario, onde a pessoa coloca somente o email, e ele manda um email pra essa pessoa com um texto pré definido, tem algum tutorial bom sobre isso ou podem me ajudar aqui mesmo? :slight_smile:

9 Respostas

david.cs20

http://www.guj.com.br/articles/21

M

Então, cara não deu certo, ele da erro no Session, diz que não acha, mas eu importei o javax.mail, pq acontece isso?

nel

O ideal é você postar o seu código completo, o erro e o stacktrace completo para que possamos analisar melhor.
Abraços.

M
SEVERE: Allocate exception for servlet com.br.umpulo.select

java.lang.ClassNotFoundException: javax.mail.Session

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533)

at java.lang.Class.getDeclaredFields0(Native Method)

at java.lang.Class.privateGetDeclaredFields(Class.java:2291)

at java.lang.Class.getDeclaredFields(Class.java:1743)

at org.apache.catalina.core.DefaultInstanceManager.populateAnnotationsCache(DefaultInstanceManager.java:276)

at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:143)

at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:125)

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136)

at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:680)

erro 500:
exception

javax.servlet.ServletException: Error instantiating servlet class com.br.umpulo.select

org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)

org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)

org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)

org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)

java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

java.lang.Thread.run(Thread.java:680)

root cause
java.lang.NoClassDefFoundError: Ljavax/mail/Session;

java.lang.Class.getDeclaredFields0(Native Method)

java.lang.Class.privateGetDeclaredFields(Class.java:2291)

java.lang.Class.getDeclaredFields(Class.java:1743)

org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)

org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)

org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)

org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)

java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

java.lang.Thread.run(Thread.java:680)

codigo servlet:

public class select extends HttpServlet {

private static final long serialVersionUID = 1L;

private Session session;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
			
			response.setContentType("text/html");
			PrintWriter out = response.getWriter();
				
			String email = request.getParameter("email");
			String senha = request.getParameter("senha");
			String login = request.getParameter("login");	
			 
			 if (login.equals("teste") && senha.equals("senha")) { 
				 out.println("Seleção<br>");
				 
		        } else { 
		        	out.println("tente outra vez<br>"); 
		        	
		        	Properties p = new Properties();  
		        	p.put("mail.host", "smtp2.locaweb.com.br"); 
		        	
		        	Session session = Session.getInstance(p, null);  
		        	MimeMessage msg = new MimeMessage(session);  
		        	
		        	try {
		        		msg.setFrom(new InternetAddress("[email removido]")); 
		        		msg.setRecipient(Message.RecipientType.TO, new InternetAddress("[email removido]"));
		        		msg.setSentDate(new Date()); 
		        		msg.setSubject("assunto da mensagem");
		        		msg.setText("corpo da mensagem");
		        		Transport.send(msg); 
		        	}
		        		
		        	catch (AddressException e) {  
		        
		        	}
		        	
		        	catch (MessagingException e) {  
		        		
		        	}
		        }

}

nel

Oi.

Use as tags code para edentar seu código colega.
Adicionou no lib do seu container web ou no web-inf do seu projeto as libs do Javamail ? :slight_smile:
Pois ele simplesmente não as encontra.

M

desculpe :oops:

Sim, eu adicionei em java build path, a lib mail.jar, quais os motivos dele não encontrar?

nel

myroks:
desculpe :oops:

Sim, eu adicionei em java build path, a lib mail.jar, quais os motivos dele não encontrar?

Isso fará ele reconhecer a classe em tempo de compilação mas não em tempo de execução.
Adicione no lib do seu container web que ele vai encontrar sem problemas :slight_smile:

Abraços.

M

Como adicionar no container web? :? :oops:

nel

Poderia dar uma pesquisa hein colega?
Qual container web tu usa?
Se for tomcat copia os jar´s lá para o: /WEB-INF/lib

Criado 11 de janeiro de 2012
Ultima resposta 11 de jan. de 2012
Respostas 9
Participantes 3