Enviar email

3 respostas
Edureis

Estou tentando enviar um email de um programa de um porjeto Web, quano rodo por um programa com main funciona, mais quando rodo com um programa com post não funciona, estes são os erros:

04/10/2011 18:09:12 org.apache.catalina.core.ApplicationContext log INFO: Marking servlet BibTCC_j182_EnviarTCC as unavailable 04/10/2011 18:09:12 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Allocate exception for servlet BibTCC_j182_EnviarTCC java.lang.ClassNotFoundException: javax.mail.Authenticator at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1363) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209) at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) at java.lang.Class.getConstructor0(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1089) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:127) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source)

Agradeço quem puder me ajudar.

3 Respostas

A

ta faltando o arquivo mail.jar.

t+

Edureis

Sim, com main() funciona com post não.

Edureis

Vou postar os códigos

JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="java.util.ArrayList"%>

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<title>BibTCC - Enviar Email</title>
</head>

<!-- Mostra imagem de fundo -->
<body background ="BibTCC_b002_Background.jpg">


	<form name="dados_tcc" action="/BibTCC/bibtcc_j182_enviartcc" method="post" onSubmit="return enviar();">  
	
		</br></br>
		<font color = "#003366">
				<center><h2>Enviar Email</h2></center>
		</font>
			
		<table width = "900">			
			<tr>
				<br>
				<hr size = "7">		
				<h3>Autor</h3>
				
				Nome:  <input type="text" size = 50 name="nome_autor_tcc1">	
				Email: <input type="text" size = 30 name="email_autor_tcc1"><br>
				Descrição Acadêmica:<br>
				<textarea name="desc_acad_autor_tcc1" rows="3" cols="110"></textarea><br>
				Profissão: <input type="text" size = 30 name="prof_autor_tcc1"><br>
				Descrição Profissional:<br>
				<textarea name="desc_prof_autor_tcc1" rows="3" cols="110"></textarea>
			</tr>
			
			<hr size = "7">
			
			<center>
				<input type="submit" value="Enviar" class="formobjects">
			</center>				
		</table>	
	</form>
</body>

<script type="text/javascript">

	function enviar(){

		//verifica se o nome do autor 1 foi preenchido
		if(document.dados_tcc.nome_autor_tcc1.value == "") {
			alert("Preencha o nome do autor 1!");	 
			document.dados_tcc.nome_autor_tcc1.focus();
			return false;
		}

		//verifica se o email do autor 1 foi preenchido
		if(document.dados_tcc.email_autor_tcc1.value == "") {
			alert("Preencha o email do autor 1!");	 
			document.dados_tcc.email_autor_tcc1.focus();
			return false;
		}

		//verifica se o descrição acadêmica do autor 1 foi preenchido
		if(document.dados_tcc.desc_acad_autor_tcc1.value == "") {
			alert("Preencha a descrição acadêmica do autor 1!");	 
			document.dados_tcc.desc_acad_autor_tcc1.focus();
			return false;
		}

		//verifica se o profissão do autor 1 foi preenchido
		if(document.dados_tcc.prof_autor_tcc1.value == "") {
			alert("Preencha a profissão do autor 1!");	 
			document.dados_tcc.prof_autor_tcc1.focus();
			return false;
		}

		//verifica se o descrição profissional do autor 1 foi preenchido
		if(document.dados_tcc.desc_prof_autor_tcc1.value == "") {
			alert("Preencha a descrição proficional do autor 1!");	 
			document.dados_tcc.desc_prof_autor_tcc1.focus();
			return false;
		}
		return true;
	}
</script>
</html>

Java

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;

import p700_email.BibTCC_c700_EnviarEmail;

public class BibTCC_j182_EnviarTCC extends HttpServlet {
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
		throws ServletException, IOException {
		
		System.out.println("Entrou no j182_Envia_TCC");
		
		
		//cria um objeto dados autor
		p200_autor.BibTCC_c200_Autor autor = new p200_autor.BibTCC_c200_Autor();

		//cria um objeto email 
		p700_email.BibTCC_c700_EnviarEmail email = new p700_email.BibTCC_c700_EnviarEmail();

		//recupera dados do autor

		if(request.getParameter("nome_autor_tcc1").length() > 50)
			autor.setNome_autor1(request.getParameter("nome_autor1").substring(0,50));		
		else
			autor.setNome_autor1(request.getParameter("nome_autor1"));		
			
		if(request.getParameter("email_autor1").length() > 30)	
			autor.setEmail_autor1(request.getParameter("email_autor1").substring(0,30));		
		else	
			autor.setEmail_autor1(request.getParameter("email_autor1"));		
				
		autor.setDesc_acad_autor1(request.getParameter("desc_acad_autor1"));	
			
		if(request.getParameter("prof_autor1").length() > 20)	
			autor.setProf_autor1(request.getParameter("prof_autor1").substring(0,20));
		else			
			autor.setProf_autor1(request.getParameter("prof_autor1"));
			
		autor.setDesc_prof_autor1(request.getParameter("desc_prof_autor1"));
		
		if(request.getSession().getAttribute("usuario")== null){
					
			
						//envia email para o autor
						email.setRemetente_email("[email removido]");						
						email.setSenha_email("xxxxxxx");
						email.setDestinatario_email(autor.getEmail_autor1());
						
						System.out.println("Destinatário : "+ email.getDestinatario_email());
						
						email.setAssunto_email("Inclusão no Sitema BibTCC");
						email.setMensagem_email
							("Você foi incluido no Sistema BibTCC como autor do TCC "+
							 ".<br>Favor entrar no Sistema para verificar e atualizar seus dados." +
							 "<br><br>Usuário: "+autor.getNome_autor1()+
							 "<br> Senha: "+autor.getNome_autor1());
												
								        	
						try {
							email.enviarEmail();
						} catch (MessagingException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						
			
		}
	}
	
}

Classe que dá erro

package p700_email;

import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class BibTCC_c700_EnviarEmail {
	
	public static String remetente_Email;
	public static String senha_Email;
	public static String destinatario_Email;
	public static String assunto_Email;
	public static String mensagem_Email;
	
	public static void setRemetente_email(String parameter){
		remetente_Email = parameter;
	}
	public static String getRemetente_email() {
		return remetente_Email;
	}

	public static void setSenha_email(String parameter){
		senha_Email = parameter;
	}
	public static String getSenha_email() {
		return senha_Email;
	}

	public static void setDestinatario_email(String parameter){
		destinatario_Email = parameter;
	}
	public static String getDestinatario_email() {
		return destinatario_Email;
	}

	public static void setAssunto_email(String parameter){
		assunto_Email = parameter;
	}
	public static String getAssunto_email() {
		return assunto_Email;
	}

	public static void setMensagem_email(String parameter){
		mensagem_Email = parameter;
	}
	public static String getMensagem_email() {
		return mensagem_Email;
	}
	
/*	public static void main(String[] args) throws MessagingException {
		setRemetente_email("[email removido]");						
		setSenha_email("edurdigo");
		setDestinatario_email("[email removido]");
		
		System.out.println("Destinatário : "+ getDestinatario_email());
		
		setAssunto_email("Inclusão no Sitema BibTCC");
		setMensagem_email
			("Você foi incluido no Sistema BibTCC como autor do TCC " +
					".<br>Favor entrar no Sistema para verificar e atualizar seus dados.");

		
		new BibTCC_c700_EnviarEmail_ant().enviarEmail();
	}
*/
	
	public void enviarEmail ()  throws MessagingException{
		
        System.out.println("	Entrou no enviaEmail");

		
       	Properties props = new Properties();
        /** Parâmetros de conexão com servidor Gmail */
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");

        Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
        	protected PasswordAuthentication getPasswordAuthentication()
        	{
        		return new PasswordAuthentication(getRemetente_email(), getSenha_email());
        	}
        });

        /** Ativa Debug para sessão */
        session.setDebug(true);

        try {
        	
        	Message message = new MimeMessage(session);
        	message.setFrom(new InternetAddress(getRemetente_email())); //Remetente

        	Address[] toUser = InternetAddress //Destinatário(s)
                             .parse(getDestinatario_email());

        	message.setRecipients(Message.RecipientType.TO, toUser);
        	message.setSubject(getAssunto_email());//Assunto
        	message.setText(getMensagem_email());
        	/**Método para enviar a mensagem criada*/
        	Transport.send(message);

        	System.out.println("	Enviou email");

        } catch (MessagingException e) {
        	throw new RuntimeException(e);
        }
	}
}
Criado 4 de outubro de 2011
Ultima resposta 5 de out. de 2011
Respostas 3
Participantes 2