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, aqui.

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 Hotmail */
            props.put("mail.transport.protocol", "smtp");
            props.put("mail.smtp.host", "smtp.live.com");
            props.put("mail.smtp.socketFactory.port", "587");
            props.put("mail.smtp.socketFactory.fallback", "false");
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "587");

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

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

            try {

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

                  message.setRecipients(Message.RecipientType.TO,
                                    InternetAddress.parse("seuamigo@hotmail.com")); //Destinatário(s)
                  message.setSubject("Enviando email com JavaMail");//Assunto
                  message.setText("Enviei este email utilizando JavaMail com minha conta Hotmail!");
                  /**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@hotmail.com" para a sua conta do Hotmail, que inclusive, serve também para contas de email com domínio: @live, @msn, @passport
  • "suasenha123" utilizando a senha da sua conta.
  • "seuamigo@hotmail.com" endereço do email destinatário. Pode ser qualquer provedor de email.

Pronto! É só compilar!

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

Confira também