Olá desenvolvedores, no tutorial anterior implementamos um simulador de PDF para enviarmos por e-mail como anexo. Neste tutorial trataremos a implementação que possibilitará anexar o arquivo.
Temos na classe ObjetoEnviaEmail o método enviarEmail(), copie todo o método, assinatura e conteúdo e cole logo abaixo. Faremos uma cópia mesmo. E isso porque ele terá a mesma função do método implementado originalmente. Altere o nome da cópia do método para enviarEmailAnexo().
O novo método pode ser entendido como dividido em duas partes, onde a primeira refere-se ao corpo do e-mail, com texto, botão e a customização. E a segunda parte que trata do arquivo de PDF anexado a este e-mail. Assim, alguns ajustes serão necessários no método enviarEmailAnexo().
PARTE 1 | CORPO DO EMAIL
Para tratar, isto é, para analisar e armazenar o cabeçalho de uma dada parte do corpo instanciaremos um objeto, o MimeBodyPart vazio.
MimeBodyPart corpoEmail = new MimeBodyPart();
Dessa forma esta dada parte do corpo pode ser preenchida por um cliente que está criando uma mensagem multiparte. Mas que dada parte do corpo do e-mail é esta? Lembra da condição? Se existia um e-mail com HTML estilizada então este e-mail era setado para o envio. Mas se não, o e-mail era enviado “cru”.
Nesta implementação da condição o objeto que recebia os valores “setados” do e-mail era o message, que agora será substituído pelo objeto corpoEmail.
PARTE 2 | ANEXO DO E-MAIL
Agora na parte dois para tratarmos do anexo igualmente instancie um novo objeto que referenciará o arquivo que será anexado.
MimeBodyPart anexoEmail = new MimeBodyPart();
O objeto anexoEmail vai “setar” por meio do método invocado setDataHandler() a instancia da fonte de dados que é um array de dados. O método setDataHandler() fornece o mecanismo para definir o conteúdo desta parte do corpo do email.
A fonte de dados receberá como argumento os dados, isto é, o simulador. O segundo argumento identifica o tipo de arquivo.
anexoEmai.setDataHandler (new DataHandler
(new ByteArrayDataSource(simuladorDePDF(), “application/pdf”)));
“Setaremos” também o nome e a extensão do arquivo.
UNINDO PARTES 1 E 2
Agora precisamos unir as duas partes, para este fim instanciaremos o objeto Multipart. A classe Multipart fornece métodos para recuperar e definir subpartes, neste caso unindo corpo e anexo do e-mail.
E por fim pegaremos o objeto message e “setaremos” como conteúdo dele o objeto multipart.
Message.setContent(multipart);
No AppTest agora o método enviaEmail() invocará o enviarEmailAnexo() passando true como argumento.
EM POUCAS PALAVRAS
Neste tutorial implementamos o método que nos permite anexar um arquivo de PDF. E no tutorial passado criamos o método de simulador de PDF com iText. Eu fico por aqui e nos vemos no próximo tutorial.