Enviando email com a API JavaMail



Documentos relacionados
Java 2 Enterprise Edition. Helder da Rocha

PADRÃO PARA ENVIO DE . Versão 1.0

Parte I. Demoiselle Mail

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

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.

A interface de uma mensagem é extremamente flexível e permite várias formas de customização de conteúdo. Figura 1 - Tipos de Mensagens JMS

Configuração do cliente de Thunderbird para usuários DAC

INF1013 MODELAGEM DE SOFTWARE

GUIA ENVIO DE EXTRATO POR

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

MANUAL DO ANIMAIL Terti Software

Tutorial para envio de comunicados

Tutorial para envio de comunicados e SMS

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Utilização do Webmail da UFS

CONFIGURAÇÃO DO OUTLOOK EXPRESS

Se acontecer algum problema no teste da conta tente configurar da seguinte maneira:

Configuração do cliente de Outlook 2010 para usuários DAC

Configuração de . Treinamento OTRS Help Desk

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

Tutorial Mozilla Thunderbird 1.5

TUTORIAL PARA IMPORTAÇÃO DE S DE CONTAS UAB PARA CONTAS GMAIL

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

Backup de s Utilizando o Outlook Express

Configurando o Outlook Express - Passo a Passo

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

Configuração do Outlook Express

Backup de s Utilizando o Outlook Express

INSTRUÇÕES PARA INSCRIÇÕES EM EVENTOS DO CÂMPUS POSSE

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


Configuração do cliente de Windows Live Mail para usuários DAC

Como Configurar uma conta de no Microsoft Outlook 2013.

LOGGING DE EVENTOS COM LOG4J

DOCUMENTAÇÃO NTIC INSTITUCIONAL

Cartilha da Nota Fiscal Eletrônica do Hábil Empresarial Profissional 7.0. Obrigado por usar nosso software! Koinonia Software Ltda.

Exercícios 07 Introdução à POO (Interface Gráfica)

Orientações para o uso do Mozilla Thunderbird

Implementando uma Classe e Criando Objetos a partir dela

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

BLACKBERRY - PME e PL Passo a Passo Registro Site BIS BlackBerry PME e Profissional Liberal

Configuração de Conta - Passo a Passo Outlook Express

Manual de uso do institucional FMB e HC. Manual de uso do institucional FMB e HC

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

Persistência de Classes em Tabelas de Banco de Dados

TUTORIAL UNP VIRTUAL

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

CURSO DE PROGRAMAÇÃO EM JAVA

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

Senha Admin. Nessa tela, você poderá trocar a senha do administrador para obter acesso ao NSControl. Inicialização

Processo de Envio de

Configurar o Furbot no Eclipse

CONVENÇÃO DE CÓDIGO JAVA

Sumário INTRODUÇÃO Acesso ao Ambiente do Aluno Ferramentas e Configurações Ver Perfil Modificar Perfil...

PHP: Formulários e upload de múltiplos arquivos Por Alfred Reinold Baudisch 28 de fevereiro de 2006.

MANUAL WEBMAIL HORDE-V.01 IBILCE/UNESP

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.

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

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:

MANUAL. Perfil de Professor

Programação Orientada a Objetos. Encapsulamento

Curso de Informática Básica

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

criptografado Versão 1.0r0 de 18 de abril de 2013 Classificação: Corporativo

COORDENAÇÃO DE ENSINO A DISTÂNCIA - EaD

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

DICAS IMPORTANTES. Alunos com dificuldades DEVEM procurar o atendimento de suporte evesp@mstech.com.br ou

Michel Max SMTP Redirect Versão 1.00

Tutorial de Integração PYTHON

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

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.

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

Tutorial Web Mail. Acesso e Utilização. MPX Brasil Cuiabá/MT: Av. Mal Deodoro, 1522 B Centro Norte. Contato: (65) cuiaba@mpxbrasil.com.

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Padrão Arquitetura em Camadas

Manual de uso do RM Portal Acessando o portal

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

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

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

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.

Tutoriais de apoio para a migração do Atualização: 30/04/2014

Institucional

FAÇA OS PASSOS ABAIXO PARA CADASTRAS AS SUAS CONTAS DE NO MICROSOFT OUTLOOK

UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO

Manual de criação de envios no BTG360

Seja Bem vindo ao Tutorial MailerWeb! Para você entrar no Painel de Controle:

Tarefas em Moodle (1.6.5+)

GUIA BÁSICO DA SALA VIRTUAL

Correio Eletrônico Outlook Express. Prof. Rafael

Como Configurar uma conta de no Microsoft Outlook 2010.

Configuração do da UFS no Outlook 2007

Tutorial para configurar o do IFSC usando o OUTLOOK EXPRESS

Podemos também definir o conteúdo dos menus da página inicial. Clique em Menus, Main Menu.

GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL

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

Manual de configuração do sistema

Lição 1 - Criação de campos calculados em consultas

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Transcrição:

Programando com Java Artigo http://mballem.wordpress.com/ Enviando email com a API JavaMail Autor Marcio Ballem: é formado em Sistemas de Informação e possui certificação Oracle Certified Professional, Java SE 6 Programmer. Trabalhou profissionalmente com desenvolvimento em Delphi 7 e Java JEE. Introdução Muitas vezes vejo em tópicos, criados em fóruns sobre Java, a dúvida do tipo Como enviar email com Java. Na internet existem vários tutoriais sobre isso, mas mesmo assim, sempre existe algum ponto em que o usuário encontra alguma dificuldade e não consegue resolve-la. Neste artigo irei demonstrar como criar uma pequena e simples aplicação de envio de email utilizando a API JavaMail. Demonstrarei como enviar email em texto simples e em formato HTML, também como anexar no email uma lista de arquivos em anexos e como enviá-lo a mais de um destinatário. 1. API JavaMail A API JavaMail foi projetada para facilitar a criação de aplicações simples ou sofisticadas quando se faz necessário o uso de correio eletrônico, o famoso email. O JavaMail possui todas as classes necessárias para criação de um serviço de email, desde a parte de conexão com a internet, o servidor de email, os protocolos necessários, a utilização de conexão por Proxy e a adição de mensagens e anexos. Desta forma não precisamos de nada além da biblioteca JavaMail para criar uma aplicação de envio ou recebimento de email. Na grande parte das vezes o JavaMail é utilizado para envio de email através do protocolo SMTP, mas a API também da suporte ao protocolo POP3 para recebimento de email e a protocolos como DNS e IMAP, todos os que precisamos para realizar o envio ou recebimento de um email. Neste artigo o foco será o envio de email pela API JavaMail que deve ser baixada no portal da Oracle e adicionada ao projeto. Para baixá-la acesse: http://www.oracle.com/technetwork/java/javaee/index-138643.html, e adicione ao projeto o arquivo mail.jar. 2. Classe MailJava Na classe MailJava vamos criar todos os atributos que serão necessários para a criação e envio de um email. Teremos que adicionar propriedades como usuário e senha de um servidor de email, para a autenticação no servidor. Também propriedades de conexão com o servidor de email e é claro os dados que serão enviados como o corpo da mensagem, assunto e anexos. Crie uma classe conforme a listagem 1 e leia atentamente os comentários do código para saber qual o papel de cada atributo na classe. Listagem 1. Classe MailJava package br.mb.tutorialjavamail;

public class MailJava { //indica se o formato de texto será texto ou html public static final String TYPE_TEXT_PLAIN = "text/plain"; public static final String TYPE_TEXT_HTML = "text/html"; //indica qual será o servidor de email(gmail, hotmail...) private String smtphostmail; //indica a porta de acesso ao servidor private String smtpportmail; //indica que a necessidade de autenticação no servidor(true ou false) private String smtpauth; //indica ao servidor que ele está recebendo uma conexão segura private String smtpstarttls; //nome do remetente do email private String fromnamemail; //email do remetente private String usermail; //senha do email do remetente private String passmail; //assunto do email private String subjectmail; //corpo do email, onde estará o texto da mensagem private String bodymail; //lista com email e nome dos destinatários private Map<String, String> tomailsusers; //lista contendo os arquivos anexos private List<String> filemails; //charset, no caso de html é necessário private String charsetmail; //tipo do formato da mensagem, texto ou html private String typetextmail; // gere os métodos getters and setters Algumas configurações são diferentes para cada servidor de email. Configurações como a smtphostmail e smtpportmail serão diferentes para cada servidor e alguns exigirão que a configuração do smtpstarttls seja setada como true e alguns não. Veja na tabela 1 algumas configurações para servidores distintos. Servidor smtphostmail smtpportmail smtpstarttls Gmail smtp.gmail.com 587 true Bol smtps.bol.com.br 587 true Ibest smtp.ibest.com.br 587 true IG smtp.ig.com.br 587 true Hotmail smtp.live.com 25 true Tabela 1 Configuração de servidores A maioria dos servidores exige autenticação segura, porém servidores de email de empresas com domínio próprio, muitas vezes não exigem essa segurança. Caso deseje testar com mais algum servidor faça uma busca no Google por acesso SMTP + o servidor desejado, assim vai encontrar facilmente os dados necessários para a conexão.

3. Classe de Envio Esta próxima classe que será criada é a classe responsável por receber as configurações, criar os objetos necessários para o email e então enviá-lo. É nesta classe que iremos trabalhar com a API JavaMail, então tome muito cuidado ao importar as classes do JavaMail para não importar classes com o mesmo nome de outros pacotes. A listagem 2 contém a classe MailJavaSender. Listagem 2. Arquivo jndi.properties package br.mb.tutorialjavamail; import javax.activation.datahandler; import javax.activation.filedatasource; import javax.mail.authenticator; import javax.mail.passwordauthentication; import javax.mail.message; import javax.mail.messagingexception; import javax.mail.session; import javax.mail.multipart; import javax.mail.transport; import javax.mail.internet.internetaddress; import javax.mail.internet.mimebodypart; import javax.mail.internet.mimemessage; import javax.mail.internet.mimemultipart; import java.io.unsupportedencodingexception; import java.util.map; import java.util.properties; public class MailJavaSender { //cria as propriedades necessárias para o envio de email public void sendermail(final MailJava mail) throws UnsupportedEncodingException, MessagingException { Properties props = new Properties( props.setproperty("mail.transport.protocol", "smtp" props.setproperty("mail.host", mail.getsmtphostmail() props.setproperty("mail.smtp.auth", mail.getsmtpauth() props.setproperty("mail.smtp.starttls.enable", mail.getsmtpstarttls() props.setproperty("mail.smtp.port", mail.getsmtpportmail() props.setproperty("mail.mime.charset", mail.getcharsetmail() //classe anonima que realiza a autenticação //do usuario no servidor de email. Authenticator auth = new Authenticator() { public PasswordAuthentication getpasswordauthentication() { return new PasswordAuthentication( mail.getusermail(), mail.getpassmail() ; // Cria a sessao passando as propriedades e a autenticação Session session = Session.getDefaultInstance(props, auth // Gera um log no console referente ao processo de envio session.setdebug(true

//cria a mensagem setando o remetente e seus destinatários Message msg = new MimeMessage(session //aqui seta o remetente msg.setfrom(new InternetAddress( mail.getusermail(), mail.getfromnamemail()) boolean first = true; for (Map.Entry<String, String> map : mail.gettomailsusers().entryset()) { if (first) { //setamos o 1 destinatario msg.addrecipient(message.recipienttype.to, new InternetAddress(map.getKey(), map.getvalue()) first = false; else { //setamos os demais destinatarios msg.addrecipient(message.recipienttype.cc, new InternetAddress(map.getKey(), map.getvalue()) // Adiciona um Assunto a Mensagem msg.setsubject(mail.getsubjectmail() // Cria o objeto que recebe o texto do corpo do email MimeBodyPart textpart = new MimeBodyPart( textpart.setcontent(mail.getbodymail(), mail.gettypetextmail() // Monta a mensagem SMTP inserindo o conteudo, texto e anexos Multipart mps = new MimeMultipart( for (int index = 0; index < mail.getfilemails().size( index++) { // Cria um novo objeto para cada arquivo, e anexa o arquivo MimeBodyPart attachfilepart = new MimeBodyPart( FileDataSource fds = new FileDataSource( mail.getfilemails().get(index) attachfilepart.setdatahandler(new DataHandler(fds) attachfilepart.setfilename(fds.getname() //adiciona os anexos da mensagem mps.addbodypart(attachfilepart, index //adiciona o corpo texto da mensagem mps.addbodypart(textpart //adiciona a mensagem o conteúdo texto e anexo msg.setcontent(mps // Envia a Mensagem Transport.send(msg

Podemos setar três configurações para o envio de email referente aos destinatários. O BCC (com cópia oculta) que serve para enviar para o destinatário um email com cópias do email sem que os outros fiquem sabendo. O CC (com cópia) envia uma cópia para a lista de destinatários, mas ao mesmo tempo os outros destinatários ficam sabendo do envio entre si. O TO (para) por sua vez é o mais comum e sempre é usado para enviar para os destinatários. Todos ficam sabendo de todos os outros destinatários também. 4. Criando a classe de teste Criaremos uma terceira classe que será responsável por informar todos os dados referentes ao envio do email. Nesta classe temos dois métodos que serão responsáveis pelo tipo de conteúdo do corpo da mensagem, um do tipo texto e outro do tipo HTML. Basta alterar a propriedade referente para enviar como um ou outro. Sete as configurações referentes ao seu servidor de email. Insira quantos destinatários quiser na lista e também quantos anexos desejar. Listagem 3. Classe MailTester package br.mb.tutorialjavamail; import javax.mail.messagingexception; import java.io.unsupportedencodingexception; import java.util.arraylist; import java.util.hashmap; import java.util.list; import java.util.map; public class MailTester { public static void main(string[] args) { MailJava mj = new MailJava( //configuracoes de envio mj.setsmtphostmail("smtp.gmail.com" mj.setsmtpportmail("587" mj.setsmtpauth("true" mj.setsmtpstarttls("true" mj.setusermail("seuemail@gmail.com" mj.setfromnamemail("seunome" mj.setpassmail("suasenha" mj.setcharsetmail("iso-8859-1" mj.setsubjectmail("javamail" mj.setbodymail(htmlmessage() mj.settypetextmail(mailjava.type_text_html //sete quantos destinatarios desejar Map<String, String> map = new HashMap<String, String>( map.put("destinatario1@bol.com.br", "email bol" map.put("destinatario2@msn.com", "email msn" map.put("destinatario3@ig.com.br", "email ig" mj.settomailsusers(map //seta quatos anexos desejar List<String> files = new ArrayList<String>( files.add("c:\\images\\ajax_loader.gif"

files.add("c:\\images\\hover_next.png" files.add("c:\\images\\hover_prev.png" mj.setfilemails(files try { new MailJavaSender().senderMail(mj catch (UnsupportedEncodingException e) { e.printstacktrace( catch (MessagingException e) { e.printstacktrace( private static String textmessage() { return "Leia o novo tutorial JavaMail do Programando com Java.\n" + "Saiba como enviar emails com anexo, em formato texto e html.\n" + "Envie seu email para mais de um destinatario."; private static String htmlmessage() { return "<html>\n" + "\t<head>\n" + "\t\t<title>email no formato HTML com Javamail!</title> \n" + "\t</head>\n" + "\t<body>\n" + "\t\t<div style='background-color:orange; width:28%; height:100px;'>\n" + "\t\t\t<ul>\n" + "\t\t\t\t<li>leia o novo tutorial JavaMail do Programando com Java.</li>\n" + "\t\t\t\t<li>aprenda como enviar emails com anexos.</li>\n" + " \t\t\t\t<li>aprenda a enviar emails em formato texto simples ou html.</li> \n" + "\t\t\t\t<li>aprenda como enviar seu email para mais de um destinátario.</li>\n" + "\t\t\t</ul>\n" + "\t\t\t<p>visite o blog \n" + "\t\t\t\t<a href='http://mballem.wordpress.com/'>programando com Java</a>\n" + "\t\t\t</p>\n" + "\t\t</div>\t\n" + "\t\t<div style='width:28%; height:50px;' align='center'>\n" + "\t\t\tdownload do JavaMail<br/>\n" + "\t\t\t<a href='http://www.oracle.com/technetwork/java/javaee/index- 138643.html'>\n" + "\t\t\t\t<img src='http://www.oracleimg.com/admin/images/ocom/hp/oralogo_small.gif'/>\n" + "\t\t\t</a> \n" + "\t\t</div>\t\t\n" + "\t</body> \n" + "</html>"; Conclusão Vimos como configurar uma classe de envio de email pela API JavaMail. Essa classe que postei no artigo não precisa ser exatamente desta forma, você pode encontrar outras maneiras de programá-la, mas as configurações e objetos criados na classe, com certeza serão sempre usadas.

No arquivo baixado para adquirir a biblioteca do JavaMail, você pode encontrar a documentação do código fonte de toda a API e ainda um arquivo em PDF que contém exemplos e explicações de como utilizar a API.