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