O JavaMail é uma excelente API que fornece uma estrutura independente de plataforma e de protocolo, para enviar, receber e manipular correio eletrônico (não necessariamente internet e-mail) e messaging como clientes.

Esta foi uma solução para um problema que passei, na qual, não havia uma conta de email de servidor pago POP3/SMTP. Procurando por várias soluções e alternativas na Internet, encontrei esta! A mais fácil, simples e prática. Veja a seguir:

Configurando o Projeto para envio de e-mail.

Antes de começar, você vai precisar das seguintes biblotecas:

  • mail.jar
  • activation.jar

Você encontra as bibliotecas contidas em um único arquivo, no seguinte endereço:

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

Usando a sua IDE favorita (Eclipse ou NetBeans), crie uma biblioteca chamada JavaMail utilizando os arquivos mail.jar e activation.jar contidos no arquivo compactado. Depois, configure o seu projeto para utilizar a biblioteca JavaMail.

Criando a classe de Envio

Crie a classe JavaMailApp e utilize o código abaixo para enviar email:

import java.util.Properties;
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 JavaMailApp
{
     
public static void main(String[] args) {
            Properties props = new Properties();
            /** Parâmetros de conexão com servidor Yahoo */
            props.put("mail.smtp.host", "smtp.mail.yahoo.com");
            props.put("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "25");

            Session session = Session.getDefaultInstance(props,
                        new javax.mail.Authenticator() {
                            
protected PasswordAuthentication getPasswordAuthentication()
                             {
                                  
return new PasswordAuthentication("seuemail@yahoo.com.br", "suasenha123");
                            
}

                       
});

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

            try {

                  Message message = new MimeMessage(session);
                  message.setFrom(new InternetAddress("seuemail@yahoo.com.br")); //Remetente

                  message.setRecipients(Message.RecipientType.TO,
                                    InternetAddress.parse("seuamigo@yahoo.com.br")); //Destinatário(s)
                  message.setSubject("Enviando email com JavaMail");//Assunto
                  message.setText("Enviei este email utilizando JavaMail com minha conta Yahoo!");
                  /**Método para enviar a mensagem criada*/
                  Transport.send(message);

                  System.out.println("Feito!!!");

             } catch (MessagingException e) {
                  throw new RuntimeException(e);
            }
      }
}




Altere os seguintes campos:

“seuemail@yahoo.com” para a sua conta do Yahoo, que inclusive, serve também para contas de email com domínio: @yahoo.com, @ymail.com, @rocketmail.com

“suasenha123” utilizando a senha da sua conta.

“seuamigo@yahoo.com.br” endereço do email destinatário. Pode ser qualquer provedor de email.

Pronto! É só compilar!
Email enviado com sucesso!!!

 

OBS: Se você utiliza algum Firewall, verifique se ele está bloqueando as portas SMTP para envio de sua mensagem.

 

 

Referências:

JavaMail - problem while sending a mail with SMTP and SSL.
Disponível em: http://forums.sun.com/thread.jspa?threadID=5317973

JavaMail - Javamail using Gmail SMTP 465 port!
Disponível em: http://forums.sun.com/thread.jspa?threadID=668779&start=30

Fundamentals of the JavaMail API.
Disponível em: http://www.ibm.com/developerworks/java/tutorials/j-javamail/section6.html

Unid. 17 - JavaMail, Helder da Rocha, 2003.
Disponível em: http://www.argonavis.com.br/cursos/java/j500/JavaMail.pdf

Livro: Dominando Java Server Faces e Facelets, utilizando Spring, Hibernate e JPA. Edson Gonçalves – Editora Ciência Moderna. 2008.