Artigo Java Magazine 29 - JavaMail Fundamental

Crie aplicações para envio e recebimento de mensagens e automatize um conjunto de tarefas importantes de aplicações web e desktop.

Esse artigo faz parte da revista Java Magazine edição 29. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

JavaMail Fundamental

Trabalhando com e-mails em Java

Crie aplicações para envio e recebimento de mensagens e automatize um conjunto de tarefas importantes de aplicações web e desktop

Com a API JavaMail é possível enviar, receber e manipular e-mails sem a necessidade de conhecer detalhes dos protocolos utilizados. O programador trata apenas de informações de alto nível, como o endereço de destino, o assunto e o conteúdo da mensagem, deixando para a API detalhes da transmissão e outras atividades de bastidores.

As utilidades de suporte a e-mail numa aplicação são muitas. Há desde usos simples, como notificar o administrador sobre erros críticos que exigem ação imediata (ex.: “banco de dados fora do ar.”), até necessidades de postagem de e-mails em massa, por exemplo para enviar faturas para todos os clientes de um serviço no final do mês; ou distribuir material de marketing direcionado de forma automatizada. Outra utilização comum é para enviar mensagens de uma aplicação web ao se confirmar compras ou o cadastro de usuários.

Neste artigo mostramos os fundamentos da API JavaMail e conceitos de tecnologias relacionadas.

Requisitos

A Sun oferece uma distribuição gratuita do JavaMail, com implementações dos protocolos POP3, IMAP e SMTP, que deve ser obtida separadamente (não sendo incluída com o J2SE). Será preciso também o JavaBeans Activation Framework (JAF), que é usado para tratar mensagens com anexos e para o suporte a algumas operações com mensagens não textuais.

A distribuição do JavaMail (veja links) inclui na subpasta lib um jar com as classes e interfaces independentes de protocolo (mailapi.jar) e três com implementações de cada um dos protocolos suportados (pop3.jar, imap.jar e smtp.jar). É incluso ainda um jar com o conteúdo dos quatro jars combinados – mail.jar– no diretório-raiz da distribuição. O JAF é distribuído em um único arquivo: activation.jar.

Você pode reduzir o tamanho da sua aplicação desktop incluindo apenas os jars para os protocolos utilizados. Por exemplo, se sua aplicação apenas envia e-mails simples via SMTP, incluir mailapi.jar e smtp.jar será suficiente.

No caso de aplicações servidoras que executem num container J2EE, a inclusão dos jars não é necessária, pois a API JavaMail faz parte do J2EE, sendo disponibilizada como padrão para as aplicações que rodam nessa plataforma.

Enviando mensagens simples

O envio de mensagens com JavaMail é demonstrado na Listagem 1. A primeira coisa a ser feita é criar um objeto javax.mail.Session, que representa uma conexão para envio/recebimento de mensagens entre um cliente e um servidor de e-mail. É responsabilidade dessa sessão armazenar informações, como usuário e senha, o tipo de protocolo usado e o endereço do provedor. A sessão pode ser obtida e inicializada com as propriedades desejadas usando o método estático getDefaulInstance(), como a seguir:

Session session = Session.getDefaultInstance(props);

Outro método que pode ser usado para inicialização da sessão é getInstance(). A diferença é que getDefaultInstance() cria a sessão na primeira vez em que é chamado e retorna sempre a mesma sessão nas chamadas seguintes (ou seja, haverá apenas uma sessão para toda a JVM). Já getInstance() cria uma nova sessão toda vez que é invocado.

O método getDefaultInstance() é o mais simples, sendo satisfatório para uma aplicação desktop usada por um usuário de cada vez; mas geralmente não será adequado para servidores, que podem ter que se comunicar com múltiplos serviços de e-mail simultaneamente." [...] continue lendo...

Artigos relacionados