JavaMail Lento e não envia mensagem

Pessoal.

Estou fazendo testes com o Javamail para coloca-lo em uma aplicação minha.

Tenho um servlet que chama a classe que envia e-mail, da seguinte forma.

enviaMail.envia("Olaaaaa","Titulo da mensagem");

O e-mail não chega, ou não é enviado… :roll:

O estranho é que antes do transport.send(msg) eu tenho um print que me joga na console “Enviando e-mail”, que chega a aprecer na console, mas o print que tenho depois não…

E o servlet continua executando normal, mesmo depois de chamar o e-mail, que alias, está demorando muito pra executar, se eu comentar a chamada do e-mail, o servlet fica bem rapido.

Alguma dica ?

valeu !

Abaixo envio as classes…

/*
 * envia.java
 *
 * Created on 28 de Junho de 2007, 10:42
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.com.system4.mail;

import java.io.InputStream;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.swing.text.PasswordView;

/**
 *
 * @author kleins
 */
public class enviaMail {
    
    /** Creates a new instance of enviaMail */
    public enviaMail() {
    }

    public static void envia(String texto, String titulo) {
        
             Properties mailProps = new Properties();
             mailProps.put("mail.smtp.host", "200.225.83.18");
             //mailProps.put("mail.transport.protocol", "smtp");
             
                
             Authenticator auth = new smtpAutenticador();
            
             
             
             
             
             Session sess = Session.getInstance(mailProps,auth);
             MimeMessage msg = new MimeMessage(sess);
             
                 try{
                     
                     msg.setFrom(new InternetAddress("interfarma@interfarma.org.br"));
                     msg.setRecipient(Message.RecipientType.TO, new InternetAddress("rodrigo@system4.com.br"));
                     
                     msg.setSentDate(new Date());
                     
                     msg.setSubject(titulo);

                     msg.setText(texto);

                     System.out.println("Enviando e-mail");
                     // evniando mensagem (tentando)
                     //Transport.connect("200.225.83.18","interfarma@interfarma.org.br","ifa");
                     Transport.send(msg);
                     
                     System.out.println("Foi");
                 
                    }
                 catch (Exception e)
                 {
                     
                 }
                         
                         

        
        
    }
    
}

E a classe de autenticação.

/*
 * smtpAutenticador.java
 *
 * Created on 28 de Junho de 2007, 11:10
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.com.system4.mail;

import javax.mail.PasswordAuthentication;

/**
 *
 * @author kleins
 */
public class smtpAutenticador extends javax.mail.Authenticator {
    
    /** Creates a new instance of smtpAutenticador */
    public smtpAutenticador() {
        
    }
    
    public PasswordAuthentication getPasswordAuthentication() {
 			String username = "interfarma@interfarma.org.br";
                        String password = "ifa";
 			return new PasswordAuthentication(username, password);
 		}
    
}

Se o seu mail server for muito lento (normalmente é a parte de autenticação que costuma ser lenta), você pode fazer uma de duas coisas:

  • Deixar uma sessão sempre aberta, para conseguir pular o tempo de autenticação;
  • Ou usar algum programa que consiga fazer "mail relay". Um exemplo desses é o Microsoft SMTP Server, ou no caso do Linux acho que o qmail ou o sendmail também podem fazer relay, uma vez que você configurar tudo direitinho. Cuidado com a configuração! Se você não tomar cuidado não é só seu programa que vai usar para "mail relay" mas qualquer coisa que estiver na sua rede.

Aí você teria o seguinte:

servlet -&gt "mail relay" -&gt servidor de email real