JAVA MAIL API. Keywords: JavaMail API. E-mail. Server. Autentication. 1. Introdução



Documentos relacionados
Enviando com a API JavaMail

Java 2 Enterprise Edition. Helder da Rocha

Parte I. Demoiselle Mail

Servidor de s e Protocolo SMTP. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Orientação a Objetos

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

Como acessar o novo webmail da Educação? Manual do Usuário. 15/9/2009 Gerencia de Suporte, Redes e Novas Tecnologias Claudia M.S.

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Permite o acesso remoto a um computador;

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

15/8/2007 Gerencia de Tecnologia da Informação Claudia M.S. Tomaz

MANUAL DE CONFI GURAÇÃO DO SI STEMA P ARA ENVI O DE EMAI L DE NFE. 1 Configuração do sistema para envio de e mail na emissão de NFE.

s editores de s Como configurar contas de nos principais Como configurar contas de s nos principais editores de s

FERRAMENTAS DE Usada para visualizar s (correio eletrônico).

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Especificação do 3º Trabalho

Arquitetura de Rede de Computadores

Disciplina de Redes de Computadores Aula Prática IV Professor Dr Windson Viana de Carvalho Protocolos de Números de Matrícula :

Tutorial Mozilla Thunderbird 1.5

Como configurar s nos celulares. Ebook. Como configurar s no seu celular. W3alpha - Desenvolvimento e hospedagem na internet

MANUAL DO INSTAR-MAIL 1.0. Pagina de login e senha do Instar-Mail

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

(eletronic mail )

Tutorial para envio de comunicados e SMS

Acessando um Banco de Dados

GUIA EMISSÃO E ENVIO DE BOLETO BANCÁRIO POR

ROTEIRO PARA INSTALAÇÃO DO BITVISE, CONFIGURAÇÃO DE CHAVES SSH, DEFINIÇÃO DAS PORTAS PARA OS TÚNEIS SSH E CONFIGURAÇÃO DO THUNDERBIRD

Tutorial: Webmail. Dicas de Uso e Funcionalidades 02/2015. Versão 01

Aplicação Prática de Lua para Web

CONSTRUÇÃO DE BLOG COM O BLOGGER

Configuração do Outlook Express

Configuração do da UFS no Outlook 2007

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Curso de Informática Básica

Introdução a Java. Hélder Nunes

Para funcionamento do Netz, alguns programas devem ser instalados e alguns procedimentos devem ser seguidos. São eles:

Entendendo como funciona o NAT

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

Aula 03 - Projeto Java Web

O Protocolo SMTP. Configuração de servidor SMTP

Programação de Computadores - I. Profª Beatriz Profº Israel

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Manual do Visualizador NF e KEY BEST

Java para Desenvolvimento Web

CONFIGURAÇÃO DO OUTLOOK EXPRESS

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

Tutorial para envio de comunicados

FTP - Protocolo. O protocolo FTP é o serviço padrão da Internet para a transferência de arquivos entre computadores.

Noções de. Microsoft SQL Server. Microsoft SQL Server

Modelos de Camadas. Professor Leonardo Larback

MANUAL DO ANIMAIL Terti Software

Máscaras de sub-rede. Fórmula

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Manual de Utilização do Zimbra

2 Diagrama de Caso de Uso

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz

Kerio Exchange Migration Tool

GUIA RECIBO BANCÁRIO COBRANÇA NÃO REGISTRADA - SLIM

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

INFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima

MANUAL WEBMAIL HORDE-V.01 IBILCE/UNESP

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

Processo de Envio de

Orientações para o uso do Mozilla Thunderbird

1. Objetivos do curso 2. 2 Comunicação Interna (CI) 13 3 Ofício 18 4 DEFINIÇÕES GERAIS 23 5 CONCLUSÃO 27

Técnicas e ferramentas de ataque. Natiel Cazarotto Chiavegatti

Roteiro para configuração de conta de do CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE SÃO VICENTE DO SUL dos seguintes domínios:

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

1. Escritório Virtual Atualização do sistema Instalação e ativação do sistema de Conexão...5

Manual de - Outlook Express

Servidor de s e Protocolo SMTP

Como funciona? SUMÁRIO

EXEMPLO DE COMO FAZER UMA MALA DIRETA

Sumário 1. SOBRE O NFGoiana DESKTOP Apresentação Informações do sistema Acessando o NFGoiana Desktop

BANCO DE DADOS CONTEÚDO INFORMÁTICA. Prof.: MARCIO HOLLWEG BANCO DE DADOS SGBD TABELA CONCEITOS BÁSICOS

Configuração de servidores SMTP e POP3

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

Tutorial para configurar o do IFSC usando o OUTLOOK EXPRESS

Manual do Google agenda. criação e compartilhamento de agendas

Capítulo 7 CAMADA DE TRANSPORTE

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

INF1013 MODELAGEM DE SOFTWARE

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Implementando uma Classe e Criando Objetos a partir dela

Um Driver NDIS Para Interceptação de Datagramas IP

UFG - Instituto de Informática

Unidade 2.1 Modelos de Referência

Transcrição:

JAVA MAIL API Maciel Hogenn 1, Prof. Fernando dos Santos 1 1 Programação II UDESC - CEAVI maciel.hog@gmail.com, fernando.santos@udesc.br Resumo A JavaMail API é uma biblioteca desenvolvida na linguagem de programação Java. Essa API disponibiliza uma estrutura com métodos para desenvolvimento de aplicativos de correio eletrônico. Essa biblioteca oferece suporte a diversos protocolos. Com essa biblioteca é possível implementar diversos serviços de e-mail. Com a JavaMail API um e-mail pode ser enviado com conteúdo de texto, HTML. Podem ser enviados também anexos de arquivos em geral. E também é possível receber e-mails. A JavaMail API é composta por quatro componentes principais: propriedades, autenticador, mensagem e transporte. Com esses configurados, o envio de e-mails com a JavaMail API se torna possível. Este artigo irá apresentar, em forma de tutorial, com exemplos de trechos de código, como configurar os componentes da JavaMail API e como usálos. Palavras-chave: JavaMail API. E-mail. Servidor. Autenticação. Abstract The JavaMail API is a library developed in the Java programming language. This API provides a structure with methods to develop applications that use email. This library provides support to many protocols. With this library it is possible to implement several e-mail services. With the JavaMail API an e-mail can be sent with text or HTML content. Attached files can also be sent. And also it is possible to receive e-mails. The JavaMail API is composed of four main components: properties, authenticator, message and transport. With those components configured, e-mail sending with JavaMail API becomes possible. This paper present, in the form of tutorial, with examples of code snippets, how to configure the components of the JavaMail API and how to use them. Keywords: JavaMail API. E-mail. Server. Autentication. 1. Introdução Antes da criação da internet, a única forma de envio de cartas era de forma mecânica, onde era escrita a caneta em um papel. Possuía um remetente, um destinatário, caixa postal e também tinha que ser submetida aos serviços de correios. Atualmente essa não é mais a única forma de envio de cartas e nem a mais simples. Com a ajuda da internet esse processo ganhou um desenrolar mais simples. Agora, graças aos correios eletrônicos, ficou muito mais simples enviar cartas. Algumas linguagens oferecem bibliotecas de suporte a e-mail, a que vamos retratar aqui é uma das bibliotecas disponibilizadas pela linguagem de programação Java. Segundo Mani et al (2005) Desde sua primeira versão, a linguagem de programação Java evoluiu. Foram adicionadas diversas funcionalidades, entre elas uma plataforma que oferece suporte a um quadro de mensagens. A biblioteca JavaMail API fornece um conjunto de classes abstratas para definição de objetos para compor um sistema de correio. A API define classes para armazenamento de mensagens e transportes. Para auxiliar a criação de servidores de correios eletrônicos, a linguagem de

programação Java oferece duas APIs: JavaMail API (SUN, 2012), e Jakarta Commons Email (APACHE, 2012). Neste trabalho o foco será na JavaMail API, que oferece um conjunto de ferramentas para criação de um cliente de e-mail. A biblioteca JavaMail API do Java oferece várias ferramentas para desenvolvimento de clientes de e-mail. Também proporciona suporte a diversas necessidades que um cliente de e-mail possui (protocolos, servidor de envio, etc.). Este artigo apresenta um tutorial da JavaMail API. O tutorial apresenta, de forma simples, como enviar um um e-mail utilizando a biblioteca JavaMail API. O presente artigo está distribuído em seções, em uma sequencia lógica, na ordem das configurações necessárias para envio de e-mail. A seção 2 apresenta os componentes necessários para formar uma estrutura base para envio do e-mail. A seção 3 explica como enviar e-mails com arquivos anexados. A seção 4 apresenta bibliotecas relacionadas, que tem por objetivo o mesmo da JavaMail API. Por fim, a seção 5 apresenta as conclusões. 2. Componentes da JavaMail API Para o envio de e-mails com a JavaMail API, necessita-se de um conjunto de componentes. Para configuração de um e- mail, necessita-se de um conjunto de propriedades (Properties), onde estarão definidos protocolos e servidores. Para uso com as propriedades precisa-se de um objeto de autenticação (Authenticator). As propriedades e o objeto de autenticação serão usados juntos para a criação de uma Sessão (Session). Posteriormente será usado um objeto de mensagem (Message), que necessitará de uma sessão para ser funcional. O objeto de mensagem irá necessitar das atribuições de valores de uma mensagem: assunto, texto da mensagem, destinatário, entre outros. E por último vai ser preciso de uma estrutura para transporte (Transport), quer necessitará do protocolo de envio e da autenticação do usuário. 2.1. Propriedades Algumas propriedades são essenciais para envio de e-mails com essa biblioteca. Para definirmos tais propriedades, iremos fazer o uso da estrutura Properties contida no pacote java.util. Dessa forma é necessário criar uma instância dessa estrutura, como pode ser visto na Figura 1. //Instancia da estrutura Properties Properies props = new Properties(); Figura 1 Criando um objeto Properties É necessário definir propriedades que são primordiais para envio de e-mails com essa biblioteca. Uma destas propriedades é a mail.transport.protocol. Embora a biblioteca JavaMail API suporte diversos protocolos, como: POP3, IMAP, etc., aqui será exemplificado o protocolo SMTPs. Devemos definí-lo como na Figura 2. //define protocolo de envio como SMTP props.put( mail.transport.protocol, smtps); Figura 2 Definição do protocolo de envio Observe, que se o valor da propriedade for informado com s no final, a API se encarrega de fazer todas as configurações de socket e define a porta correta de acordo com o protocolo. A próxima propriedade a ser definida será o servidor SMTP propriamente dito. No exemplo da Figura 3 iremos tomar como base o servidor SMTP do Gmail, mas numa aplicação pode-se usar o qual for necessário. //definindo servidor SMTP props.put( mail.smtp.host, smtp.gmail.com ); Figura 3 Definição do Servidor de Envio Exemplos de outros servidores SMTP: Hotmail (smtp.live.com), Yahoo (smtp.yahoo.com.br). Precisamos agora definir um remetente, observe que o endereço do remetente terá que pertencer ao mesmo host definido anteriormente no servidor de envio

SMTP. Para isso basta definir a propriedade user, como na Figura 4. //a conta que está enviando o e-mail props.put( mail.smtp.user, bertoline@gmail.com ); Figura 4 Definição do Remetente Após definir um usuário, temos que garantir que haverá uma autenticação no servidor. Para isso temos que definir uma propriedade que irá tornar ativa a necessidade de uma autenticação no servidor SMTP para envio do e-mail. Para isso basta a definição a seguir: //ativa a autenticação props.put( mail.smtp.suth, true ); Figura 5 Ativação da Autenticação Concluído. Já temos todas as propriedades essenciais para o envio de um e-mail, para receber e-mails é usado o mesmo métodos para definição das propriedades, porém algumas propriedades se diferem. 2.2. Autenticador O próximo passo será criar um autenticador. Um objeto autenticador é usado na criação de uma sessão, onde o mesmo tem a função de autenticar o usuário com seu login e sua senha. Para isso a JavaMail API disponibiliza a classe Authenticator, contida no pacote javax.mail. Segundo Mani et al (2005) o objeto Authenticator controla os aspectos de segurança para o objeto Session [...]. Ele controla indiretamente o acesso a sessão padrão. A classe Authenticator é abstrata, e para seu uso é necessário que o seu método getpasswordauthentication() seja implementado. Esse método terá como retorno uma instância de PasswordAuthentication, essa instância necessita de dois parâmetros, o primeiro será o username, que será a identificação do usuário, e o segundo a password, que irá de fato autenticar o usuário. Uma das possíveis formas de criar um autenticador, conforme a descrição anterior, é criando uma classe que possua como propriedades o username e a password, e que sejam setadas no método construtor, como na Figura 6. import javax.mail.authenticator; import javax.mail.passwordauthentication; public class Auth extends Authenticator { public String username = null; public String password = null; } public Auth(String user, String pwd) { username = user; password = pwd; } @Override protected PasswordAuthentication getpasswordauthentication() { return new PasswordAuthentication( username, password); } Figura 6 Classe Para Autenticação Para criar um autenticador válido, usando o exemplo da Figura 6, basta criar uma instância da da classe do autenticador, como na Figura 7. //cria um autenticador Auth auth = new Auth( xx@xxx.com, yy ); Figura 7 Criando a instância do Autenticador 2.3. Sessão Todo serviço de e-mail requer uma sessão. A sessão é que cria a conexão com o servidor, seja ela diretamente no provedor de e-mail ou num cliente de e-mail. Isso significa que aqui também necessitaremos de uma, e mais uma vez a biblioteca JavaMail API nos dá suporte, e dessa vez com a classe Session. Para a criar uma sessão iremos utilizar tudo o que criamos até então, ou seja, vamos precisar de todas as propriedades criadas e de um autenticador. Finalmente, para dar inicio a sessão deveremos criar uma instância da classe Session do pacote javax.mail. A classe Session, por padrão não possui construtor, porém oferece um conjunto de métodos estáticos que criam instâncias padrões ou

novas instâncias. No nosso caso iremos criar uma instância padrão da sessão chamando o método getdefaultinstance(props, auth), passando como parâmetro primeiro a lista de propriedades e em segundo o autenticador, como na Figura 8. /*Criando a sessão que ira realizar a *conexão com o servidor */ Session session = Session. getdefaultinstance(props, auth); Figura 8 Criando a Sessão Tudo o que necessitávamos quanto a configuração de servidor, de autenticação e de sessão já está concluído. 2.4. Mensagem Agora vamos para a parte principal de um e-mail, a parte onde o usuário comum está presente. A mensagem. Vamos assumir que todo e-mail possui uma mensagem, ou melhor, todo e- mail é uma mensagem. Dessa forma, toda mensagem possui um conjunto de atributos, sejam eles: remetente, destinatário(s), assunto, corpo (mensagem propriamente dita), entre outros. Para cobrir essa necessidade, a JavaMail API disponibiliza duas classes: Message do pacote javax.mail e MimeMessage do pacote javax.mail.internet. A classe MimeMessage é uma subclasse de Message.java que implementa métodos adicionais para autenticação SMTP e padrões MIME. O padrão de mensagem MIME (Multipurpose Internet Mail Extensions) é um protocolo complementar ao SMTP, que pode ser usado também com outros protocolos. Segundo Vaz (2007) MIME é um protocolo que foi definido com o objetivo de permitir a inclusão de dados não-ascii via e-mail. Isto porque o protocolo SMTP, usado para transferência de e-mails, trabalha apenas com caracteres NTV (Network Virtual Terminal) ASCII (American Standard Code for Information Interchange), formado por 8 bits: o bit mais significativo em zero, seguido por 7 bits ASCII. O MIME atua convertendo os dados não-ascii inseridos pelo usuário, para dados ASCII, de forma que possam ser transmitidos pelo SMTP. No receptor é feito o processo inverso. Segundo Mani et al (2005) subclasses das classe Message podem implementar diversos formatos de mensagem. Por exemplo, o JavaMail API disponibiliza a classe MimeMessage, que estende a classe Message para implementar os padrões RFC (Request for Comments) e MIME. As implementações das subclasses de Message geralmente são construidas a partir de fluxos de bytes e geram fluxos de bytes para transmissão. O padrão RFC define o formato das mensagens de e-mail. Segundo Crocker (1982) Este padrão especifica uma sintaxe para mensagens de texto que são enviados entre os usuários de computadores, no âmbito de mensagens de correio eletrônico. Para tomarmos como exemplo teremos instâncias da classe MimeMessage que é, geralmente, mais usada. Nessa instância serão definidos atributos que irão compor o conjunto completo da mensagem, ou e-mail se assim preferir. Para a criação de uma instância de MimeMessage, precisamos de uma sessão criada, no nosso caso já temos, então é só passá-la como parâmetro no seu construtor, como na Figura 9. //Instancia da mensagem Message msg = new MimeMessage(session); Figura 9 Criando o objeto Message Agora vamos definir o destinatário e o remetente desse e-mail, ou seja, quem irá receber, e quem irá enviar. Precisamos então criar duas instância de endereço de internet, para isso a biblioteca JavaMail API disponibiliza a classe InternetAddress, encontrada no pacote javax.mail.internet, que é de uso bem simples. A seguir será mostrado como criar essa instâncias de endereço e como definí-los na mensagem. Vale lembrar que todas as definições feitas numa instancia de Message exigem o tratamento da exceção MessageException e

a manipulação de uma instância de InternetAddress exigem o tratamento da exceção AddressException. Primeiro será criado a instancia do destinatário e o definiremos na mensagem através no método setrecipient(). Não podemos esquecer que esse método pede dois parâmetros, o primeiro é o tipo de destinatário (que pode ser definido usando métodos estáticos de Message) e o segundo é o endereço de internet. No tipo de destinatário iremos usar o tipo TO, mas convém lembrar que estão disponíveis outros dois tipos: CC (Carbon Copy) e BCC (Blind Carbon Copy). Observe a Figura 10. //Criando o endereço InternetAddress para = new InternetAddress( xxx@xxx.com ); //Setando o destinatário msg.setrecipient( Message.RecipientType.TO, para); Figura 10 Definindo o Destinatário Agora vamos criar a instancia do remetente. O procedimento é bem similar ao do destinatário, o que muda é o método que o define na mensagem. Através do método setfrom() que exige somente o endereço de internet no remetente, como na Figura 11: //Criando endereco InternetAddress de = new InternetAddress(from); //Setando a origem do email (remetente) msg.setfrom(de); Figura 11 Definindo Remetent E agora vamos definir o assunto da mensagem através do método setsubject() que pede como parâmetro um literal que defina o assunto da mensagem. Observe a Figura 12. //Setando o assunto msg.setsubject( Hello ); Figura 12 Definindo Assunto da Mensagem Finalmente definiremos a mensagem propriamente dita. Isso através do método setcontent() que pede dois parâmetros, o primeiro é o conteúdo da mensagem, e o segundo define o tipo do conteúdo. Veja a Figura 13. //Setando o conteúdo/corpo do email msg.setcontent( Hello World, text/plain ); Figura 13 Definindo Conteúdo da Mensagem As mensagens da JavaMail API suportam diversos tipos de conteúdos. Alguns deles são: text/plain que pode ser usado para textos; text/html que pode ser usado para marcações HTML, entre outros (MANI et al, 2005). Pronto, já temos todos os protocolos definidos, sessão autenticada, mensagem criada e seus atributos definidos. 2.5. Transporte Para o transporte da mensagem a biblioteca JavaMail API disponibiliza a classe Transport do pacote javax.mail, que através da sessão que já está criada e autenticada envia a mensagem que também já está criada. Primeiro devemos criar uma instância de Transport, que será criada a partir da sessão que já possui parâmetros de transporte definidos. Fazendo como na Figura 14. /* Objeto encarregado de enviar * os dados para o email */ Transport tr = session. gettransport("smtps"); Figura 14 Criando Objeto de Transporte com Protocolo Especificado Agora temos que conectar ao servidor, através do método connect(), disponível na instancia de Transport, e que pede como parâmetro o servidor SMTP, user e password. Observe a Figura 15. //define o sevidor smtp \ user \ password tr.connect( smtp.gmail.com, zzz@zzzz.com, 123456 ); Figura 15 Conectando ao Servidor de Envio

O envio da mensagem será efetivado através do método sendmessage() da instância de Transport. O método pede dois parâmetros, primeiro a instância de Message com todos seus atributos definidos, e o segundo um array contendo todos os destinatários (pode ser invocado o método getallrecipients() da instância de Message). Mas antes, não podemos esquecer de salvar todas as alterações da mensagem. Após enviar a mensagem não esquecer de fechar a conexão de Transport. Confira a Figura 16. //Salvando a mensagem msg.savechanges(); //enviando a mensagem tr.sendmessage(msg, msg.getallrecipients()); tr.close(); 3. Anexos Figura 16 Enviando a Mensagem Para envio de mensagens com anexo, os procedimentos continuam os mesmos. Serão usadas as mesmas propriedades, os mesmos protocolos, e o envio irá acontecer da mesma forma. Só precisaremos alterar o objeto da mensagem. Anteriormente no envio da mensagem, a tratamos como um todo, agora vamos ter que tratá-la como uma composição de partes que formarão um todo. Serão duas partes, uma será a o corpo da mensagem e a outra será o anexo. Para criar partes de uma mensagem, a JavaMail API fornece a classe MimeBodyPart do pacote javax.mail.internet, que será usada juntamente com a classe MimeMessage. Como serão duas partes então precisaremos de dois objetos da classe MimeBodyPart, como na Figura 17. MimeBodyPart corpo = new MimeBodyPart(); MimeBodyPart anexo = new MimeBodyPart(); Figura 17 Criando os Objetos MimeBodyPart Agora, criaremos a parte do corpo do e-mail, onde estará todo o texto que se deseja enviar. Então será necessário adicionar o texto em umas das partes criadas anteriormente, conforme a Figura 18. corpo.settext( Hello World ); Figura 18 Adicionando o texto da mensagem Para criar a segunda parte da mensagem, que será o anexo, irmos fazer o uso de três classes: File do pacote java.io, FileDataSource e DataHandler, ambas do pacote javax.activation. A classe File será utilizada para criação de um objeto que carregará o caminho do arquivo que se deseja enviar como anexo. A classe FileDataSource será usada apenas para encapsular o arquivo contido no objeto da classe File, e a classe DataHandler irá auxiliar na manipulação do arquivo, ou seja, será com o auxílio dela que o arquivo será adicionado em uma das partes da mensagem, como na Figura 19. //carrega o caminho do arquivo File file = new File("/home/aluno/Documentos/Ex10.txt"); //encapsula o arquivo FileDataSource fds = new FileDataSource(file); //carrega o arquivo na mensgem anexo.setdatahandler(new DataHandler(fds)); anexo.setfilename(file.getname()); Figura 19 Criando a parte do arquivo Após criadas as partes que irão compor a mensagem do e-mail, será necessário unir essas partes. Para isso a JavaMail API disponibiliza a classe Multipart do pacote javax.mail. Com um objeto da classe Multipart basta adicionar as partes ao mesmo. Agora para adicionar as partes unidas na mensagem, basta inserir o objeto da classe Multipart no conteúdo do objeto da mensagem, utilizando o método setcontent(), conforme a Figura 20. Multipart mp = new MimeMultipart(); //Unindo as partes no objeto mp.addbodypart(corpo); mp.addbodypart(anexo); //Adicionando as partes mensagem msg.setcontent(mp); Figura 20 Adicionando as partes na mensagem Após a execução dos procedimentos anteriores, a mensagem já tem tudo o que

precisa, incluindo texto e anexo. No restante, os procedimentos para envio e transporte do e-mail continuam os mesmos. 4. APIs Aternativas 4.1 PHPMailer PHPMailer é uma classe PHP para a linguagem de programação PHP (Personal Home Page), que disponibiliza um pacote de funcionalidades para envio de e-mail. Essa classe oferece suporte principalmente ao envio de e-mails HTML e anexos. Também dá suporte a diversos tipo de destinatários (To, Cc e Bcc). Em resumo a PHPMailer é uma maneira eficaz de enviar e-mail (KLINGENBERG, [entre 1999 e 2009]). Assim como a JavaMail, a biblioteca PHPMailer também necessita da configuração de alguns componentes, mas o que de fato a diferencia da JavaMail é que necessita de somente um método para efetivar o envio do e-mail, conforme a figura 21. bool mail (string $to, string $subject, string $message [, string $additional_headers [, string $additional_parameters ]]); Figura 21 Métodos para envio de e-mail com a PHPMailer. 4.2. Mail Mail é uma biblioteca escrita em Ruby, que tem como objetivo a manipulação de e-mails. Ela oferece suporte a criação, envio e recebimento de e-mails. E ainda mais, ela fornece algumas funcionalidades para funcionar como Proxy (BRANDO, 2009). A biblioteca Mail do Ruby possui recursos que a tornam excepcional no trabalho com textos, porém em relação a JavaMail API, a biblioteca Mail também necessita de alguns componentes e configurações, porém de forma muito mais simples. 4.3. MAPI A API MAPI (Messaging Application Programming Interface) permite integração com a linguagem de programação Delphi, ela oferece suporte a diversas funcionalidades, uma delas é o envio de e- mails. E com o uso de poucas estruturas é possível o envio de e-mails (WILDT, [201-?]). A MAPI API também requer algumas configurações que são necessárias para o envio de e-mails, em relação a JavaMail API, a biblioteca MAPI possui um ponto marcante: não é multi-plataforma, como Delphi é uma linguagem direcionada para plataformas windows, limitando assim o uso dessa biblioteca. 5. Considerações Finais Neste artigo foram apresentados, em forma de tutorial, todos os componentes necessários para o envio de e-mails como a JavaMail API. Com exemploes de códigos e descrições explicativas. A biblioteca JavaMail API proporciona diversas classes e métodos para implementação de clientes de e-mail. De uma forma relativamente simples é possível enviar e receber e-mails com seu auxílio. A biblioteca JavaMail API contém implementações de protocolos e padrões, como por exemplo o protocolo de envio SMTP, com uma simples definição numa propriedade se configura esse servidor. Outra vantagem é o padrão MIME de mensagem que já vem implementado na biblioteca, e mais, ainda é possível implementar novos padrões se assim desejar. A biblioteca também disponibiliza implementações de transporte, de sessão e também de autenticação. Pode se concluir que quando se pensa em implementar um cliente de e-mail, a biblioteca JavaMail API com certeza é uma boa opção. Referências APACHE, Fundation. Jakarta Commons. 2012. Disponível em:

http://commons.apache.org/email/. Acesso em 12, dez de 2012. BRANDO, Carlos. Mail: Uma Nova Biblioteca para Envio de E-mails em Ruby. 2009. Dsponível em: http://www.rubyinside.com.br/mail-umanova-biblioteca-para-envio-de-e-mails-emruby-2462. Acesso em: 4 dez. 2012 http://www.devmedia.com.br/envio-de-emails-no-delphi-win32/1195. Acesso em: 4 dez. 2012 CROCKER, David H. Standard for the format of arpa internet text messages. University of Delaware, 1982. Disponível em: http://www.ietf.org/rfc/rfc0822.txt. Acesso em: 2 dez. 2012. KLINGENBERG, Tom. PHPMailer. Tutorial descritivo para uso da API PHPMailer. [entre 1999 e 2009] Disponível em: http://phpmailer.worxware. com/index.php?pg=tutorial. Acesso em: 4 dez. 2012 MANI, John; SHANNON, Bil. SPIVAK, Max; CARTER, Kapono; COTTON, Chris. JavaMail TM API Design Specifications. 2005. 128 p. (javamail-1-149769.pdf 1,8MB). Disponível em http://www.oracle.com/technetwork/java/jav amail-1-149769.pdf. Acesso em: 28 out. 2012. SUN, Microsystems. JavaMail API. 2012. Disponível em: http://www.oracle.com/technetwork/java/jav amail/index.html. Acesso em: 12, dez de 2012. VAZ, Veronica T.. S/MIME. Trabalho Final da Disciplina de Redes de Computadores II. Universidade Federal do Rio de Janeiro - UFRJ, 2007. Disponível em: http://www.gta.ufrj.br/grad/07_2/veronica/in dex.html. Acesso em 2 dez. de 2012. WILDT, Daniel. Envio de E-Mails no Delphi Win32. [201-?]. Disponível em: