Você está na página 1de 7

PADRO PARA ENVIO DE E-MAIL

Verso 1.0

Fevereiro 2006

Sumrio de Informaes do Documento Tipo do Documento: Relatrio Ttulo do Documento: Padro para envio de e-mail Estado do Documento: Elaborado Responsveis: Marlon, Edson revisado por Elisabeth Hoffmann Palavras-Chaves: e-mail, padro, smtp, servio, JavaMail, JNDI Resumo: Este documento define o padro para envio de e-mail para as aplicaes que utilizam o framework Pinho Nmero de pginas: 7 Software utilizados: OpenOffice Writer 2.0 Verso Data Mudanas Autores 1.0 13/02/2006 Elaborao Inicial Marlon, Edson

Sumrio
1INTRODUO..................................................................................................................................................... 4 2SERVIO JBOSS..................................................................................................................................................5 3UTILIZANDO O SERVIO................................................................................................................................ 6

1 INTRODUO
Na metodologia de desenvolvimento de software da Celepar no havia, at o momento, uma definio para a construo/configurao do envio de e-mail nas aplicaes WEB. Cada aplicao poderia utilizar livremente qualquer biblioteca que suprisse os recursos essenciais para a elaborao do componente responsvel por enviar os e-mails. Porm, foi identificada a necessidade de se padronizar a utilizao de um servio de e-mail (que pode ser nico para todas as aplicaes), bem como o componente que se encarrega de manipular e enviar os email da aplicao (utilizando a biblioteca de classes JavaMail, desenvolvida pela Sun Microsystems). Atualmente, o servio SMTP configurado em cada aplicao (hard-code ou em arquivo de propriedades) o que dificulta o processo de manuteno. A razo para a padronizao justamente reduzir o impacto com relao a manuteno e aumentar a produtividade no desenvolvimento. Segundo a forma proposta neste documento, todas as aplicaes acessam o mesmo servio (JNDI) de e-mail, que sero disponibilizados no servidor de aplicaes (JBoss). O objetivo deste documento apresentar um guia para o processo de envio de e-mail nas aplicaes que utilizam o Framework Pinho. Os elementos essenciais desse guia sero explicados detalhadamente nos tpicos abaixo.

PINHO - FRAMEWORK - CELEPAR

2 SERVIO JBOSS
Os dados do servidor SMTP so configurados como um servio JNDI no JBoss. Este servio definido atravs de um arquivo de configuraes (mail-service.xml) que estar ativo no JBoss para que a aplicao possa fazer uso quando necessrio. O JBoss contm o arquivo ../ jbossX/server/default/deploy/mail-service.xml padro, que dever ser customizado conforme o modelo abaixo. Deste modo, logo que o servidor for iniciado o servio de e-mail estar pronto para uso. Segue abaixo o exemplo do arquivo mail-service.xml utilizando um servidor SMTP:

<?xml version="1.0" encoding="UTF-8"?> <!DOCT !" server> <server> <cl#ss$#%& code'#se="li'" #rc&ives="m#il.(#r) #c%iv#%ion.(#r) m#il-$l*gin.(#r"+> <!--======================================================= --> <!-- ,#il Connec%ion F#c%or- --> <!-- ====================================================== --> <m'e#n code="org.('oss.m#il.,#il.ervice" n#me="('oss/service=,#il"> <attribute name="JNDIName">java:/Mail</attribute> <#%%ri'*%e n#me="Con0ig*r#%ion"> <con0ig*r#%ion> <!-- C&#nge %o -o*r m#il server $ro%o%ocol --> <$ro$er%- n#me="m#il.%r#ns$or%.$ro%ocol" v#l*e="sm%$"+> <!-- C&#nge %o %&e .,T! g#%e1#- server --> <property name="mail.smtp.host" value="expressomx.pr. ov.br"/> <!-- "n#'le de'*gging o*%$*% 0rom %&e (#v#m#il cl#sses --> <$ro$er%- n#me="m#il.de'*g" v#l*e="0#lse"+> <+con0ig*r#%ion> <+#%%ri'*%e> <+m'e#n> <+server>

Exemplo 2.1 Exemplo do arquivo mail-service.xml utilizando o SMTP do Expresso.

O arquivo mail-service.xml permite a configurao de vrios servidores de envio de e-mail. Para isso basta adicionar tags <mbean> para cada configurao. Para recuperar o servio configurado no JBoss, a aplicao dever utilizar a interface JNDI que ser explicada no prximo tpico.

PINHO - FRAMEWORK - CELEPAR

3 UTILIZANDO O SERVIO
Primeiramente dever ser desenvolvido o componente para envio de e-mail da aplicao, utilizando para isto a biblioteca JavaMail desenvolvida pela Sun Microsystems. Abaixo o exemplo apresentado de forma simplificada:
package gov.pr.celepar.consorte.action; import import import import import import import import import javax.mail.Message; javax.mail.MessagingException; javax.mail.Session; javax.mail.Transport; javax.mail.internet.AddressException; javax.mail.internet.InternetAddress; javax.mail.internet.MimeMessage; javax.naming.Context; javax.naming.InitialContext;

public class Mail { public static void enviarEmailSimples String subject! String to! String "rom! String mensagem# t$ro%s AddressException! MessagingException { enviarEmailSimples subject! ne% String&'{to(! "rom! mensagem#; ( public static void enviarEmailSimples String subject! String&' to! String "rom! String mensagem# t$ro%s AddressException! MessagingException { Session mailSession ) null; tr*{ Context initCtx ) ne% InitialContext #; mailSession ) javax.mail.Session#initCtx.lookup +java,-Mail+#; ( catc$ javax.naming..amingException e# { e.printStackTrace #; ( InternetAddress&' destinatario ) ne% InternetAddress&to.lengt$'; InternetAddress remetente ) ne% InternetAddress "rom#; "or int i)/; i0to.lengt$;i11#{ destinatario&i' ) ne% InternetAddress to&i'#; ( Message message ) ne% MimeMessage mailSession#; message.set2rom remetente#; message.set3ecipients Message.3ecipientT*pe.T4! destinatario#; message.setSubject subject#; message.setContent mensagem.toString #! +text-plain+#; ( Transport.send message#;

Exemplo 3.1 Classe para envio de e-mail.

Neste exemplo, temos dois mtodos estticos chamados enviarEmailSimples que aceitam um e-mail (String) e um array de e-mails (String[]) respectivamente. Esta uma sugesto de

PINHO - FRAMEWORK - CELEPAR

7 implementao, ficando a critrio do desenvolvedor adequ-la s suas necessidades. Exemplo de chamada ao componente:
String subject ) +Assunto+; String&' to ) {+emaildestino56celepar.pr.gov.br+!+emaildestino76celepar.pr.gov.br+(; String "rom ) +emailorigem6celepar.pr.gov.br+; String mensagem ) +Mensagem+; Mail.enviarEmailSimples subject! to! "rom! mensagem#;

Exemplo 3.2 C di!o para a c"amada ao m#todo para envio de e-mail.

O servio SMTP configurado no arquivo mail-service.xml acessado atravs da interface JNDI (Java Naming Directory Interface). No exemplo abaixo, a classe Mail recupera esse servio, conforme a linha em destaque:

public class Mail { ... Session mailSession ) null; tr*{ Context initCtx ) ne% InitialContext #; mailSessi ! " #$a%a&.mail.Sessi !'i!i()(&.l ( catc$ javax.naming..amingException e# { e.printStackTrace #; (

*+,#-$a%a./0ail-'1

...

Trec$o do ar8uivo 9M: mail;service.xml, 2a((3i4+(e !ame"-JNDIName-5$a%a./0ail2/a((3i4+(e5 ... 0propert* name)+mail.smtp.$ost+ value)+e&,3ess m&.,3.6 %.43+-< ...

Exemplo 3.3 C"amada do servi$o SMTP atrav#s do %&'( )quadro superior* e Trec"o do +M, de con-i!ura$.o )quadro in-erior*.

Note que o nome java:/Mail, dado ao atributo JNDIName no XML, o mesmo invocado na classe Mail atravs do comando 'initCtx.lookup(java:/Mail)'. Atravs desse nome torna-se possvel capturar o SMTP que est indicado na tag <property> do xml.

PINHO - FRAMEWORK - CELEPAR

Você também pode gostar