Envio de email com form JSP e Servlet

Olá, estou tentando fazer um formulário para envio de email para posteriormente utiliza-lo como portlet fazendo as adaptações necessárias. O form já está pronto, o servlet não está implementado. Dei uma pesquisada para tentar encontrar uma solução para o meu problema, mas não consegui, sempre que insiro os pedaços de código que encontro, o tomcat não carrega. O problema que esbarrei é o seguinte:

Preencho todos os campos do form, clico em enviar, e a página de confirmação de envio aparece confirmando o envio, porém, pelo fato de não ter implementado a classe do servlet, nada é enviado. Gostaria de saber se alguém sabe um modo simples de implementar a classe do Servlet para fazer o envio.

(OBS: pesquisei algo sobre envio de email pelo Gmail, mas não consegui incluir os códigos no servlet.)

Eis meus códigos:
1º o form:

<fieldset>
	<legend><b>Formulário de contato</b></legend>
		<form action="ServletController" method="post">
			<table align="center" cellspacing="0">
				<tr>
					<td align="right">Nome:</td>
					<td><input type="text" name="nome" size="45" /></td>
				</tr>
				<tr>
					<td align="right">E-mail:</td>
					<td><input type="text" name="email" size="45" /></td>
				</tr>
				<tr>
					<td align="right">Assunto:</td>
					<td><input type="text" name="assunto" size="45" /></td>
				</tr>
				<tr>
					<td align="right" valign="top">Mensagem:</td>
					<td><textarea rows="10" cols="35"></textarea></td>
				</tr>
				<tr>
					<td align="right" valign="bottom">Código:</td>
					<td>
						<p><img src="captcha.jpg"></p> <!-- insere o kaptcha para validacão -->
						<input type="text" name="codigo" size="26" />
					</td>
				</tr>
				<tr>
					<td colspan="2" align="center">
						<input type="submit" value="Enviar mensagem" />
						<input type="reset" value="Limpar" />
					</td>
				</tr>
			</table>
		</form>
</fieldset>

2º o que eu fiz do Servlet (praticamente nada)

@WebServlet("/ServletController")
public class ServletController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.processaRequisicao(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.processaRequisicao(request, response);
	}

	public void processaRequisicao(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		RequestDispatcher view = request.getRequestDispatcher("sucesso.jsp");
		view.forward(request, response);
	}
}

Se alguém souber um jeito simples de implementar o servlet para concretizar o envio, agradeço.

Por favor, não marque o título com informações óbvias como (Dúvida) ou (Ajuda).

Foi mal, é que reparei que haviam várias visualizações mas nenhuma resposta, pensei que os usuários estavam entrando imaginando ser um “tutorial” ao invés de uma dúvida.

vc só precisa implementar no seu servlet amigo, aqui tem várias citações pro seu problema, só da uma procurada, http://www.guj.com.br/java/87637-api-java-mail---usando-o-gmaill essa aqui vai te ajudar, usei este tuto uns meses atras :smiley:

Boa sorte

[quote=rodrigofonsecajr]vc só precisa implementar no seu servlet amigo, aqui tem várias citações pro seu problema, só da uma procurada, http://www.guj.com.br/java/87637-api-java-mail---usando-o-gmaill essa aqui vai te ajudar, usei este tuto uns meses atras :smiley:

Boa sorte[/quote]

Olá, obrigado pela dica, mas a classe que ele cita como “classe para enviar e-mail” seria o servlet? se estiver enganado me corrija por favor.

No seu caso você pode adicionar o ‘miolo’ do código no seu servlet, o servlet nada mais é que uma classe JAVA, tem algumas configs que dão certos poderes a ela, então quase todo código em JAVA pode ser adicionado ao seu servlet.

Você deve copiar da linha 12 a 119 do tutorial e ir corrigindo os erros que a IDE vai te mostrar, adaptando a sua necessidade, daí vai postando os erros que agente te ajuda aqui

:smiley:

[quote=rodrigofonsecajr]No seu caso você pode adicionar o ‘miolo’ do código no seu servlet, o servlet nada mais é que uma classe JAVA, tem algumas configs que dão certos poderes a ela, então quase todo código em JAVA pode ser adicionado ao seu servlet.

Você deve copiar da linha 12 a 119 do tutorial e ir corrigindo os erros que a IDE vai te mostrar, adaptando a sua necessidade, daí vai postando os erros que agente te ajuda aqui

:smiley: [/quote]

Inseri as linhas que você havia sugerido, fazendo alterações necessárias para não ocorrerem erros de sintaxe, porém ao compilar, o server do tomcat não carrega e aponta o seguinte erro:

[color=red]Apr 19, 2013 3:56:43 PM org.apache.catalina.startup.Catalina start
SEVERE: Catalina.start:
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Catalina.start(Catalina.java:684)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
… 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
… 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
… 11 more

Apr 19, 2013 3:56:43 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 9293 ms [/color]

Eis o código do servlet:

@WebServlet(&quot;/ServletController&quot;)
public class ServletController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	private String mailSMTPServer;    
    private String mailSMTPServerPort;
    
    public ServletController(){
    	mailSMTPServer = &quot;smtp.gmail.com&quot;;    
        mailSMTPServerPort = &quot;465&quot;;
    }
    
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.processaRequisicao(request, response, null, null);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.processaRequisicao(request, response, null, null);
	}

	public void processaRequisicao(HttpServletRequest request, HttpServletResponse response, String mailSMTPServer, String mailSMTPServerPort) throws ServletException, IOException{
		
	    this.mailSMTPServer = mailSMTPServer;    
	    this.mailSMTPServerPort = mailSMTPServerPort;     
		
		String destinatario = request.getParameter(&quot;destinatario&quot;);
		String assunto = request.getParameter(&quot;assunto&quot;);
		String mensagem = request.getParameter(&quot;mensagem&quot;);
		String envia = request.getParameter(&quot;envia&quot;);
		
		Mensagem msg = new Mensagem();
		msg.setDestinatario(destinatario);
		msg.setAssunto(assunto);
		msg.setMensagem(mensagem);
		msg.setEnvia(envia);
		
		mailSMTPServer = &quot;smtp.gmail.com&quot;;
		mailSMTPServerPort = &quot;465&quot;;
		
		Properties props = new Properties();    
	     
        props.put(&quot;mail.transport.protocol&quot;, &quot;smtp&quot;); //define protocolo de envio como SMTP    
        props.put(&quot;mail.smtp.starttls.enable&quot;,&quot;true&quot;);     
        props.put(&quot;mail.smtp.host&quot;, mailSMTPServer); //server SMTP do GMAIL    
        props.put(&quot;mail.smtp.auth&quot;, &quot;true&quot;); //ativa autenticacao    
        props.put(&quot;mail.smtp.user&quot;, destinatario); //usuario ou seja, a conta que esta enviando o email (tem que ser do GMAIL)    
        props.put(&quot;mail.debug&quot;, &quot;true&quot;);    
        props.put(&quot;mail.smtp.port&quot;, mailSMTPServerPort); //porta    
        props.put(&quot;mail.smtp.socketFactory.port&quot;, mailSMTPServerPort); //mesma porta para o socket    
        props.put(&quot;mail.smtp.socketFactory.class&quot;, &quot;javax.net.ssl.SSLSocketFactory&quot;);    
        props.put(&quot;mail.smtp.socketFactory.fallback&quot;, &quot;false&quot;);
	    
        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);  
            }
        }
        
        SimpleAuth auth = null;  
        auth = new SimpleAuth (&quot;edmano@gmail.com&quot;,&quot;edmano10&quot;);
        
        Session session = Session.getDefaultInstance(props, auth);  
        session.setDebug(true);
        
        Message mens = new MimeMessage(session);  
        
        try {  
              
            mens.setRecipient(Message.RecipientType.TO, new InternetAddress(destinatario));  
              
            mens.setFrom(new InternetAddress(envia));  
            
            mens.setSubject(assunto);  
              
            mens.setContent(mensagem,&quot;text/plain&quot;);  
  
        } catch (Exception e) {  
            System.out.println(&quot;&gt;&gt; Erro: Completar Mensagem&quot;);  
            e.printStackTrace();  
        }  
          
          
        Transport tr;  
        try {  
            tr = session.getTransport(&quot;smtp&quot;);   
             
            tr.connect(mailSMTPServer, &quot;edmano@gmail.com&quot;, &quot;xxxxxxx&quot;);  
            mens.saveChanges(); // don't forget this  
            
            tr.sendMessage(mens, mens.getAllRecipients());  
            tr.close();  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            System.out.println(&quot;&gt;&gt; Erro: Envio Mensagem&quot;);  
            e.printStackTrace();  
        }  
  
        RequestDispatcher view = request.getRequestDispatcher(&quot;sucesso.jsp&quot;);
		view.forward(request, response);
        
    }  
  
  }

baixe a última versão do JAVAMAIL e coloque na pasta WEB-INF/LIB os jars

http://www.oracle.com/technetwork/java/javamail/index-138643.html

mailapi.jar e smtp.jar

atualiza o projeto e roda denovo :slight_smile:

[quote=rodrigofonsecajr]baixe a última versão do JAVAMAIL e coloque na pasta WEB-INF/LIB os jars

http://www.oracle.com/technetwork/java/javamail/index-138643.html

mailapi.jar e smtp.jar

atualiza o projeto e roda denovo :slight_smile: [/quote]

Fiz oque você sugeriu novamente, o projeto chegou a rodar, mas quando cliquei no botão para enviar a mensagem ocorreu o seguinte erro:

[color=red]
Apr 19, 2013 4:16:07 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [net.antoniopassos.appwebform.controle.ServletController] in context with path [/AppWebForm] threw exception
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:542)
at net.antoniopassos.appwebform.controle.ServletController.processaRequisicao(ServletController.java:70)
at net.antoniopassos.appwebform.controle.ServletController.doPost(ServletController.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroEmail.doFilter(FiltroEmail.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroCaptcha.doFilter(FiltroCaptcha.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroEmail.doFilter(FiltroEmail.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroCaptcha.doFilter(FiltroCaptcha.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

[/color]

Pelo oque eu vi em algumas das linhas dos erros existem erros nas linhas 42 e 70 do Servlet.

@WebServlet(&quot;/ServletController&quot;)
public class ServletController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	private String mailSMTPServer;    
    private String mailSMTPServerPort;
    
    public ServletController(){
    	mailSMTPServer = &quot;smtp.gmail.com&quot;;    
        mailSMTPServerPort = &quot;465&quot;;
    }
    
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.processaRequisicao(request, response, mailSMTPServer, mailSMTPServerPort); ------&gt; ERRO NESSA LINHA
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.processaRequisicao(request, response, mailSMTPServer, mailSMTPServerPort);
	}

	public void processaRequisicao(HttpServletRequest request, HttpServletResponse response, String mailSMTPServer, String mailSMTPServerPort) throws ServletException, IOException{
		
	    this.mailSMTPServer = mailSMTPServer;    
	    this.mailSMTPServerPort = mailSMTPServerPort;     
		
		String destinatario = request.getParameter(&quot;destinatario&quot;);
		String assunto = request.getParameter(&quot;assunto&quot;);
		String mensagem = request.getParameter(&quot;mensagem&quot;);
		String envia = request.getParameter(&quot;envia&quot;);
		
		Mensagem msg = new Mensagem();
		msg.setDestinatario(destinatario);
		msg.setAssunto(assunto);
		msg.setMensagem(mensagem);
		msg.setEnvia(envia);
		
		mailSMTPServer = &quot;smtp.gmail.com&quot;;
		mailSMTPServerPort = &quot;465&quot;;
		
		Properties props = new Properties();    
	     
        props.put(&quot;mail.transport.protocol&quot;, &quot;smtp&quot;); //define protocolo de envio como SMTP    
        props.put(&quot;mail.smtp.starttls.enable&quot;,&quot;true&quot;);     
        props.put(&quot;mail.smtp.host&quot;, mailSMTPServer); //server SMTP do GMAIL    
        props.put(&quot;mail.smtp.auth&quot;, &quot;true&quot;); //ativa autenticacao    
        props.put(&quot;mail.smtp.user&quot;, destinatario); -----&gt;ERRO NESSA LINHA  
        props.put(&quot;mail.debug&quot;, &quot;true&quot;);    
        props.put(&quot;mail.smtp.port&quot;, mailSMTPServerPort); //porta    
        props.put(&quot;mail.smtp.socketFactory.port&quot;, mailSMTPServerPort); //mesma porta para o socket    
        props.put(&quot;mail.smtp.socketFactory.class&quot;, &quot;javax.net.ssl.SSLSocketFactory&quot;);    
        props.put(&quot;mail.smtp.socketFactory.fallback&quot;, &quot;false&quot;);
	    
        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);  
            }
        }
        
        SimpleAuth auth = null;  
        auth = new SimpleAuth (&quot;edmano@gmail.com&quot;,&quot;xxxxxx&quot;);
        
        Session session = Session.getDefaultInstance(props, auth);  
        session.setDebug(true);
        
        Message mens = new MimeMessage(session);  
        
        try {  
              
            mens.setRecipient(Message.RecipientType.TO, new InternetAddress(destinatario));  
              
            mens.setFrom(new InternetAddress(envia));  
            
            mens.setSubject(assunto);  
              
            mens.setContent(mensagem,&quot;text/plain&quot;);  
  
        } catch (Exception e) {  
            System.out.println(&quot;&gt;&gt; Erro: Completar Mensagem&quot;);  
            e.printStackTrace();  
        }  
          
          
        Transport tr;  
        try {  
            tr = session.getTransport(&quot;smtp&quot;);   
             
            tr.connect(mailSMTPServer, &quot;edmano9@gmail.com&quot;, &quot;xxxxxxx&quot;);  
            mens.saveChanges(); // don't forget this  
            
            tr.sendMessage(mens, mens.getAllRecipients());  
            tr.close();  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            System.out.println(&quot;&gt;&gt; Erro: Envio Mensagem&quot;);  
            e.printStackTrace();  
        }  
  
        RequestDispatcher view = request.getRequestDispatcher(&quot;sucesso.jsp&quot;);
		view.forward(request, response);
        
    }  
  
  }

Bom, blz agora o componente do email esta ok, da uma verificada em como está a configuração do servlet, pq o erro é NullPointerException, deve ter algo preenchido errado, da uma olhada nas linhas

42 - Properties props = new Properties();

e

98 - tr.connect(mailSMTPServer, "edmano@gmail.com", “xxxxxxx”);

:smiley:

[quote=rodrigofonsecajr]Bom, blz agora o componente do email esta ok, da uma verificada em como está a configuração do servlet, pq o erro é NullPointerException, deve ter algo preenchido errado, da uma olhada nas linhas

42 - Properties props = new Properties();

e

98 - tr.connect(mailSMTPServer, "edmano@gmail.com", “xxxxxxx”);

:smiley: [/quote]

em uma das linhas de erro, ele cita alguma irregularidade na linha 70 e na 42 do servlet

SEVERE: Servlet.service() for servlet [net.antoniopassos.appwebform.controle.ServletController] in context with path [/AppWebForm] threw exception
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:542)
[color=red]at net.antoniopassos.appwebform.controle.ServletController.processaRequisicao(ServletController.java:70)
at net.antoniopassos.appwebform.controle.ServletController.doPost(ServletController.java:42)[/color]

aqui estão as linhas do código:

da um sysout neste destinatario, e me fala o que vai retornar

precisamos saber se ele é usuario ou seja, a conta que esta enviando o email neste caso tem que ser do (tem que ser do GMAIL)

[quote=rodrigofonsecajr]da um sysout neste destinatario, e me fala o que vai retornar

precisamos saber se ele é usuario ou seja, a conta que esta enviando o email neste caso tem que ser do (tem que ser do GMAIL) [/quote]

Sim. Olhei de novo o código do outro post que vc mandou e vi que a variável destinatário, na verdade era para ser o email do usuário (campo e-mail do form). Fiz a modificação, rodei o projeto, ele chegou na página de sucesso, porém no console, aparecem erros tratados no try/catch.

INFO: Server startup in 3634 ms
DEBUG: JavaMail version 1.4.7
DEBUG: URL jar:file:/home/romano/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/AppWebForm/WEB-INF/lib/smtp.jar!/META-INF/javamail.providers
DEBUG: successfully loaded resource: jar:file:/home/romano/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/AppWebForm/WEB-INF/lib/smtp.jar!/META-INF/javamail.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
DEBUG: Providers Listed By Protocol: {smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
DEBUG: URL jar:file:/home/romano/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/AppWebForm/WEB-INF/lib/smtp.jar!/META-INF/javamail.address.map
DEBUG: successfully loaded resource: jar:file:/home/romano/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/AppWebForm/WEB-INF/lib/smtp.jar!/META-INF/javamail.address.map
DEBUG: setDebug: JavaMail version 1.4.7
>> Erro: Completar Mensagem
[color=red]java.lang.NullPointerException
at javax.mail.internet.InternetAddress.parse(InternetAddress.java:673)
at javax.mail.internet.InternetAddress.parse(InternetAddress.java:633)
at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:111)
at net.antoniopassos.appwebform.controle.ServletController.processaRequisicao(ServletController.java:104)
at net.antoniopassos.appwebform.controle.ServletController.doPost(ServletController.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroEmail.doFilter(FiltroEmail.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroCaptcha.doFilter(FiltroCaptcha.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroEmail.doFilter(FiltroEmail.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroCaptcha.doFilter(FiltroCaptcha.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)[/color]
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false
>> Erro: Envio Mensagem
[color=red]javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
nested exception is:
java.net.NoRouteToHostException: No route to host
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at net.antoniopassos.appwebform.controle.ServletController.processaRequisicao(ServletController.java:120)
at net.antoniopassos.appwebform.controle.ServletController.doPost(ServletController.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroEmail.doFilter(FiltroEmail.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroCaptcha.doFilter(FiltroCaptcha.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroEmail.doFilter(FiltroEmail.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at net.antoniopassos.appwebform.controle.FiltroCaptcha.doFilter(FiltroCaptcha.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:160)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:321)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:211)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
… 35 more[/color]

brother é isso aí, agora é só as configs mesmo, olha no erro

DEBUG SMTP: trying to connect to host “smtp.gmail.com”, port 465, isSSL false

um erro está aqui

 try {    
                
            mens.setRecipient(Message.RecipientType.TO, new InternetAddress(destinatario));    
                
            mens.setFrom(new InternetAddress(envia));    
              
            mens.setSubject(assunto);    
                
            mens.setContent(mensagem,"text/plain");    
    
        }

o outro parece estar aqui

try {    
            tr = session.getTransport("smtp");     
               
            tr.connect(mailSMTPServer, "edmano9@gmail.com", "xxxxxxx");    
            mens.saveChanges(); // don't forget this    
              
            tr.sendMessage(mens, mens.getAllRecipients());    
            tr.close();    
        }