A JavaMail API permite esta implementação de maneira bastante simplificada.
Juntamente com esta possibilidade, temos uma gigante e poderosa ferramenta de e-mail, gratuita, o Gmail do Google, que nos permite criar uma conta gratuita a fim de integrarmos a mesma à nossa aplicação.
Os servidores do Gmail, necessitam de uma autenticação um pouco diferenciada (SSL), o que pode se tornar um fator complicador na implementação desta funcionalidade.
Descrevo neste post uma Classe JAVA que é capaz de enviar emails usando texto simples, ou conteúdo HTML, para uma mensagem mais rebuscada.
Além disso, realiza a validação e autenticação frente os servidores do Google, de forma a permitir a utilização da mesma com uma conta do Gmail.
Você ainda pode compilar um .jar da mesma e utilizar seus métodos públicos de envio de e-mail, incorporando facilmente esta funcionalidade a qualquer outra aplicação, sem precisar escrever tudo novamente.
Baixando a JavaMail API
Para começarmos, devemos baixar e adicionar ao nosso classpath (importar o .jar dependendo da IDE) o arquivo java.mail.jar .Código Fonte
Abaixo código fonte completo e comentado. O método main() pode ser usado para executar diretamente a classe no console e enviar mensagens.
Não esqueça de alterar o código com os endereços de remetente e destinatário.
Não esqueça de alterar o código com os endereços de remetente e destinatário.
Para chamá-la através de outras aplicações, simplesmente instancie o construtor EnviaEmail(String, String); com o nome de usuário (cadastrado no Gmail) e senha.
package br.com.devfacil.email.view;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
* Classe Utilitária que contém métodos para envio de Email através de conta do
* Gmail
*/
public class EnviaEmail {
/**
* Construtor sem parametros, ao ser chamado já instancia as configuraççoes
* de email do Gmail na JVM
*
*/
public EnviaEmail(String userNameGmail, String senhaGmail) {
this.username = userNameGmail;
this.senha = senhaGmail;
ajustaParametros();
}
/**
* Variavel local para Sessao
*/
Session session = null;
String username = null;
String senha = null;
/**
* Metodo 'main()' para teste e execução
*
*/
public static void main(String[] args) {
/**
* Mensagem de teste para envio de email Html
*/
String mensagemHtmlTeste = "<html>\n"
+ "<body>\n"
+ "<h1> Mensagem para você</h1>\n"
+ "<h2> conteúdo da Mensagem:</h2>\n"
+ "<p>Mensagem enviada através de Aplicação "
+ "que estudei no blog <a href=\"http://www.devfacil.blogspot.com.br\"><b>DevFacil!</b></a></p>\n"
+ "</body>\n"
+ "</html>";
try {
EnviaEmail ee = new EnviaEmail("eu@gmail.com", "123456");
/**
* Envia mensagem de e-mail com conteúdo html
*/
ee.enviarEmailHtml("eu@gmail.com", "seu@amigo.com", "Estou aprendendo a Enviar Email através do JAVA!", mensagemHtmlTeste);
/**
* Envia mensagem de e-mail simples, somente com texto
*/
ee.enviarEmailHtml("eu@gmail.com", "seu@amigo.com", "Estou aprendendo a Enviar Email através do JAVA!", "Mensagem Somente Texto");
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
/**
* Metodo para envio de mensagem com texto simples
*/
public void enviarEmail(String remetente, String destinatario, String assunto, String conteudo) throws Exception {
try {
Message message = new MimeMessage(session);
//Configura o Remetente da mensagem
message.setFrom(new InternetAddress(remetente));
//Configura o Destinatário da mensagem
Address[] toUser = InternetAddress
.parse(destinatario);
//Configura o Assunto da mensagem
message.setRecipients(Message.RecipientType.TO, toUser);
message.setSubject(assunto);
//Configura o Conteudo da mensagem
message.setText(conteudo);
/**
* Envia a mensagem criada
*/
Transport.send(message);
System.out.println("Email enviado com Sucesso; ");
} catch (MessagingException e) {
throw new Exception("Erro ao enviar email! \n" + e.getMessage());
}
}
/**
* Metodo para envio de mensagem padrao HTML ja formatado
*/
public void enviarEmailHtml(String remetente, String destinatario, String assunto, String conteudoHtml) throws Exception {
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(remetente));
Address[] toUser = InternetAddress
.parse(destinatario);
message.setRecipients(Message.RecipientType.TO, toUser);
message.setSubject(assunto);
Multipart multipart = new MimeMultipart("related");
BodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(conteudoHtml, "text/html");
multipart.addBodyPart(htmlPart);
message.setContent(multipart);
/**
* Método para enviar a mensagem criada
*/
Transport.send(message);
System.out.println("Email enviado com Sucesso; ");
} catch (MessagingException e) {
throw new Exception("Erro ao enviar email! \n" + e.getMessage());
}
}
/**
* Configura aa propriedades da JVM com parametros do servidor Gmail
*
* Modificador de acesso 'private' pois não é necessário que este método
* seja chamado de outras classes
*/
private void ajustaParametros() {
Properties props = new Properties();
/**
* Conexão com servidor Gmail
*/
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
/**
* Associa autenticação a sessao de correio
*/
session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, senha);
}
});
}
}
Nenhum comentário:
Postar um comentário