<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DestaqueBlog &#187; javamail</title>
	<atom:link href="http://weblog.destaquenet.com/tag/javamail/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.destaquenet.com</link>
	<description>Blog da equipe Destaquenet.</description>
	<lastBuildDate>Tue, 23 Nov 2010 17:06:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>2 (boas) formas de testar clientes JavaMail</title>
		<link>http://weblog.destaquenet.com/2008/09/20/2-boas-formas-de-testar-clientes-javamail/</link>
		<comments>http://weblog.destaquenet.com/2008/09/20/2-boas-formas-de-testar-clientes-javamail/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 04:00:27 +0000</pubDate>
		<dc:creator>Daniel Martins</dc:creator>
				<category><![CDATA[Português]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javaee]]></category>
		<category><![CDATA[javamail]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[mock-javamail]]></category>
		<category><![CDATA[mocking]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[subethasmtp wiser]]></category>
		<category><![CDATA[testes]]></category>

		<guid isPermaLink="false">http://weblog.destaquenet.com/?p=29</guid>
		<description><![CDATA[Sem sombra de dúvidas, a API Java mais usada para resolver a questão do envio e recebimento de emails é o JavaMail. Apesar de existirem outras opções, como o Spring Mail e Commons Email, no fim das contas é o &#8230; <a href="http://weblog.destaquenet.com/2008/09/20/2-boas-formas-de-testar-clientes-javamail/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Sem sombra de dúvidas, a <acronym title="Application Programming Interface">API</acronym> Java mais usada para resolver a questão do envio e recebimento de emails é o <a href="http://java.sun.com/products/javamail/">JavaMail</a>. Apesar de existirem outras opções, como o <a href="http://static.springframework.org/spring/docs/2.0.x/reference/mail.html">Spring Mail</a> e <a href="http://commons.apache.org/email/">Commons Email</a>, no fim das contas é o próprio JavaMail quem faz todo o trabalho sujo, já que tais APIs são baseadas no próprio JavaMail.</p>
<p>Apesar de dar conta do recado, a referida API conta com alguns problemas bastante complicados, dentre os quais eu destaco o <em>design</em> (horrível, diga-se de passagem) de <a href="http://java.sun.com/products/javamail/javadocs/index.html">suas classes e interfaces</a>, que parecem fazer o possível para dificultar a testabilidade dos seus &#8220;clientes&#8221;. <span id="more-29"></span></p>
<h3>Entendendo o problema</h3>
<p>Uma técnica de testes bastante utilizada atualmente consiste no uso de <em>frameworks</em> para <a href="http://en.wikipedia.org/wiki/Mock_object">Mocking de objetos</a>. Esses <em>frameworks</em> permitem testar código que faça uso de quaisquer recursos externos e que são, por natureza, difíceis de testar. Classes que necessitam acessar recursos de infraestrutura, como arquivos em disco, impressoras e bancos de dados, são ótimas candidatas a serem &#8220;mockadas&#8221;.</p>
<p>O grande problema é que, para que tais <em>frameworks</em> possam ser usados, o código a ser &#8220;mockado&#8221; tem de seguir <a href="http://www.artima.com/interfacedesign/contents.html">algumas regrinhas de codificação</a>. Por exemplo, alguns <em>frameworks</em> não conseguem &#8220;mockar&#8221; uma classe concreta; outros por sua vez, conseguem &#8220;mockar&#8221; classes concretas desde que elas não sejam finais.</p>
<p>Bom, só para resumir, o ideal seria que o código todo &#8212; tanto das classes de infraestrutura quanto das classes que fazem uso das primeiras &#8212; seja orientado a interfaces. Isso é necessário pois <a href="http://www.jmock.org/">grande</a> <a href="http://www.easymock.org/">parte</a> dos <em>frameworks</em> Java para Mocking de objetos se apoiam na <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Proxy.html">API Proxy</a> para fazer seu trabalho e, como muitos já devem saber, não é possível criar <em>proxies</em> de classes contretas através do uso dessa API.</p>
<p>Para ilustrar melhor o que estou tentando dizer, segue um exemplo de código que envia um e-mail com a API JavaMail:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Properties</span> props <span style="color: #339933;">=</span> <span style="color: #003399;">System</span>.<span style="color: #006633;">getProperties</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
props.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;mail.smtp.host&quot;</span>, <span style="color: #0000ff;">&quot;smtp.middlenet.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Session session <span style="color: #339933;">=</span> Session.<span style="color: #006633;">getDefaultInstance</span><span style="color: #009900;">&#40;</span>props<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
MimeMessage message <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MimeMessage<span style="color: #009900;">&#40;</span>session<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
message.<span style="color: #006633;">setFrom</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> InternetAddress<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Frodo&quot;</span>, <span style="color: #0000ff;">&quot;frodo@theshire.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
message.<span style="color: #006633;">addRecipient</span><span style="color: #009900;">&#40;</span>RecipientType.<span style="color: #006633;">TO</span>, <span style="color: #000000; font-weight: bold;">new</span> InternetAddress<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Gandalf&quot;</span>, <span style="color: #0000ff;">&quot;blog@gandalf.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
message.<span style="color: #006633;">setSubject</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Be careful&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
message.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Sauron is looking for the One Ring!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
Transport.<span style="color: #006633;">send</span><span style="color: #009900;">&#40;</span>message<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Veja, por exemplo, que o objeto <code>Session</code> é obtido através da chamada ao método estático <code>getDefaultInstance()</code>; de modo semelhante, temos também a chamada ao método estático <code>send()</code>, na última linha do código. Ah claro, sem contar que a classe <code>Session</code> é <code><strong>final</strong></code>! Como podemos fazer para testar o que vai para e o que volta da API JavaMail?</p>
<h3>Uma solução</h3>
<p>Apesar de não ser possível testar o código anterior usando um <em>framework</em> para Mocking de objetos &#8220;tradicional&#8221;, felizmente há uma luz no fim do túnel.</p>
<p>Uma opção bastante interessante é a utilização de um servidor <acronym title="Simple Mail Transfer Protocol">SMTP</acronym> &#8220;de mentirinha&#8221;, para o qual as mensagens são enviadas. Assim, podemos verificar o que acontece quando o código &#8220;conversa&#8221; com um servidor.</p>
<p>A boa notícia é que não precisamos <a href="http://www.faqs.org/rfcs/rfc821.html">implementar</a> um servidor SMTP do zero! Uma opção de servidor como esse é o <a href="http://subethasmtp.tigris.org/wiser.html">SubEthaSMTP Wiser</a> (!). Com ele, podemos subir um servidor SMTP numa porta qualquer. Então, basta configurar nossa classe de envio de e-mails de modo que tal servidor seja usado no lugar do servidor de produção. As mensagens enviadas a esse servidor podem ser consultadas e verificadas através de asserções no código de testes.</p>
<h4>Usando o SubEthaSMTP Wiser com o Maven</h4>
<p>Se você usa o <a href="http://maven.apache.org/">Maven</a>, então basta adicionar a dependência no seu POM para tornar as classes do SubEthaSMTP Wiser disponíveis no seu ambiente de testes:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.subethamail<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>subethasmtp-wiser<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>test<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Talvez você veja uma mensagem de erro indicando que a dependência <code>javax.activation:1.0.2</code> não foi encontrada. Se isso acontecer, você deverá baixar essa versão do <a href="http://java.sun.com/products/archive/javabeans/jaf102.html">site da Sun</a> e fazer a instalação manualmente no seu repositório local. (o Maven informa qual comando rodar para fazer essa instalação).</p>
<h4>Exemplo de uso</h4>
<p>Usar esse servidor é uma tarefa bem simples. A maior dificuldade é configurar a nossa classe de envio de e-mails para se conectar nesse servidor em vez do servidor de produção. Veja só:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">EmailMessage message <span style="color: #339933;">=</span> ... <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// objeto com os dados da mensagem</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* inicia o servidor */</span>
Wiser server <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Wiser<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
server.<span style="color: #006633;">setPort</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
server.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* configura o cliente */</span>
<span style="color: #003399;">Properties</span> prop <span style="color: #339933;">=</span> <span style="color: #003399;">System</span>.<span style="color: #006633;">getProperties</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
prop.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;mail.smtp.host&quot;</span>, <span style="color: #0000ff;">&quot;localhost&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
prop.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;mail.smtp.port&quot;</span>, <span style="color: #0000ff;">&quot;2500&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
session <span style="color: #339933;">=</span> Session.<span style="color: #006633;">getDefaultInstance</span><span style="color: #009900;">&#40;</span>prop<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
EmailSender sender <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> JavaMailEmailSender<span style="color: #009900;">&#40;</span>session<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// minha classe</span>
sender.<span style="color: #006633;">send</span><span style="color: #009900;">&#40;</span>message<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// o parâmetro contém os dados de envio e corpo da mensagem</span>
&nbsp;
server.<span style="color: #006633;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// pára o servidor</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* verifica o que foi enviado */</span>
assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span>, server.<span style="color: #006633;">getMessages</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
assertEquals<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Sauron is looking for the One Ring!&quot;</span>, server.<span style="color: #006633;">getMessages</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getMimeMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getContent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Nas primeiras linhas iniciamos o servidor. Em seguida, configuramos a <code>Session</code> do JavaMail para que ela se conecte ao nosso servidor &#8220;de mentirinha&#8221;. A partir desse ponto, tudo funciona como de costume, com a vantagem de podermos realizar asserções para verificar se as mensagens chegaram ao servidor da forma esperada. Isso é especialmente útil quando utilizamos algum tipo de <a href="http://velocity.apache.org/">processador</a> de <em>templates</em> durante o envio das mensagens, permitindo que possamos testar o que exatamente chegou ao servidor.</p>
<h3>Para quem não gostou dessa abordagem&#8230;</h3>
<p>Existe ainda uma outra opção que podemos utilizar para testar classes que fazem uso do JavaMail. Trata-se de um projeto chamado <a href="https://mock-javamail.dev.java.net/">mock-javamail</a> que, ao contrário do SubEthaSMTP Wiser, não usa um servidor SMTP &#8220;de mentirinha&#8221; para receber as mensagens; o que ele faz é configurar o JavaMail em <em>runtime</em> de modo que as mensagens enviadas sejam armazenadas em memória.</p>
<h4>Usando o mock-javamail com o Maven</h4>
<p>Primeiramente precisamos adicionar <a href="http://download.java.net/maven/2">o repositório Maven</a> do <a href="http://java.net/">java.net</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;repositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>java.net2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://download.java.net/maven/2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/repositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Feito isso, basta declarar a dependência:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.jvnet.mock-javamail<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>mock-javamail<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h4>Exemplo de uso</h4>
<p>Este projeto é mais simples de se utilizar que o SubEthaSMTP Wiser justamente pelo fato de não precisarmos iniciar um servidor SMTP. Isso fica evidente no exemplo abaixo, que é uma adaptação do código anterior:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">EmailMessage message <span style="color: #339933;">=</span> ... <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// objeto com os dados da mensagem</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* configura o cliente */</span>
<span style="color: #003399;">Properties</span> prop <span style="color: #339933;">=</span> <span style="color: #003399;">System</span>.<span style="color: #006633;">getProperties</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
prop.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;mail.smtp.host&quot;</span>, <span style="color: #0000ff;">&quot;localhost&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
prop.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;mail.smtp.port&quot;</span>, <span style="color: #0000ff;">&quot;2500&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
session <span style="color: #339933;">=</span> Session.<span style="color: #006633;">getDefaultInstance</span><span style="color: #009900;">&#40;</span>prop<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
EmailSender sender <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> JavaMailEmailSender<span style="color: #009900;">&#40;</span>session<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// minha classe</span>
sender.<span style="color: #006633;">send</span><span style="color: #009900;">&#40;</span>message<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// o parâmetro contém os dados de envio e corpo da mensagem</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* verifica o que foi enviado */</span>
assertEquals<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span>, Mailbox.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;gandalf@asskickers.com&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
assertEquals<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Sauron is looking for the One Ring!&quot;</span>, Mailbox.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;gandalf@asskickers.com&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getContent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://weblog.destaquenet.com/2008/09/20/2-boas-formas-de-testar-clientes-javamail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

