<?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>Lucas Teixeira &#187; mail</title>
	<atom:link href="http://lucastex.com.br/tag/mail/feed/" rel="self" type="application/rss+xml" />
	<link>http://lucastex.com.br</link>
	<description>@lucastex</description>
	<lastBuildDate>Fri, 07 Jan 2011 12:44:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Config.groovy &#8211; Cuidado ao manipular suas configurações</title>
		<link>http://lucastex.com.br/2010/01/11/config-groovy-cuidado-ao-manipular-suas-configuracoes/</link>
		<comments>http://lucastex.com.br/2010/01/11/config-groovy-cuidado-ao-manipular-suas-configuracoes/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 00:18:00 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Maldades do Groovy]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[grailsapplication]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[problema]]></category>
		<category><![CDATA[referencia]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=234</guid>
		<description><![CDATA[

Hum, reportando uma situação no mínimo inusitada que tive por aqui.
Acabei descobrindo, da maneira ruim, que no Grails, quando lêmos a configuração da aplicação (Config.groovy) através da referência grailsApplication.config estamos manipulando uma variável passível de alterações, ou seja, qualquer atributo que você recuperar de lá, e modificar, assim estará para toda a execução.
Na minha situação, [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2010%252F01%252F11%252Fconfig-groovy-cuidado-ao-manipular-suas-configuracoes%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F6RuMHa%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Config.groovy%20-%20Cuidado%20ao%20manipular%20suas%20configura%C3%A7%C3%B5es%20%22%20%7D);"></div>
<p>Hum, reportando uma situação no mínimo inusitada que tive por aqui.</p>
<p>Acabei descobrindo, da maneira ruim, que no Grails, quando lêmos a configuração da aplicação (Config.groovy) através da referência <strong>grailsApplication.config</strong> estamos manipulando uma variável passível de alterações, ou seja, qualquer atributo que você recuperar de lá, e modificar, assim estará para toda a execução.</p>
<p>Na minha situação, eu mantinha uma lista de e-mails lá no arquivo de configuração para que quando disparado, eu pudesse enviar o e-mail a estes destinatários somados ao e-mail do usuário, que tinha acabado de ser inputado no formulário. Tinha algo assim:</p>
<pre class="brush: groovy; title: ;">contato.destinatarios = [&quot;email1@xpto.com&quot;, &quot;email2@xpto.com&quot;, &quot;email3@xpto.com&quot;]</pre>
<p>E dentro do controller, usando o mail plugin (<a href="http://lucastex.com.br/2010/01/02/envio-de-e-mails-com-o-mail-plugin/">leia este post sobre o mail plugin</a>), executava o seguinte trecho de código:</p>
<pre class="brush: groovy; title: ;">def destinatarios = grailsApplication.config.contato?.destinatarios?.toArray()
destinatarios &lt;&lt; params.email
sendMail {
    to destinatarios
    subject &quot;Contato ...&quot;
    body &quot;......&quot;
 }</pre>
<p>Ou seja, quando eu pegava a referência dos destinatários do Config, eu mantinha essa referência em &#8216;destinatários&#8217;. Quando eu adicionava neste array o destinatário que vinha do formulários &#8220;params.email&#8221;, eu alterava a *instância* e referência da configuração da aplicação, e aquele e-mail ali ficava.</p>
<p>Resultado, no primeiro contato, receberam o e-mail a lista de destinatários e o primeirocontato@xpto.com, na segunda execução, todos eles da configuração, o primeirocontato@xpto.com e também o segundocontato@xpto.com foram copiados.</p>
<p>E assim sucessivamente.</p>
<p>Vivendo e aprendendo, tomem cuidado com isso!</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2010/01/11/config-groovy-cuidado-ao-manipular-suas-configuracoes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Portal imobiliário usando Groovy e Grails</title>
		<link>http://lucastex.com.br/2010/01/10/portal-imobiliario-usando-groovy-e-grails/</link>
		<comments>http://lucastex.com.br/2010/01/10/portal-imobiliario-usando-groovy-e-grails/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 13:05:34 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[acegi]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[GORM]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[imob]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[locaweb]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[richui]]></category>
		<category><![CDATA[runtimelogging]]></category>
		<category><![CDATA[settings]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[sqlserver]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=220</guid>
		<description><![CDATA[

Ontem (dia 09/01) fizemos o lançamento de um site que desenvolvemos usando Groovy e Grails, um desafio e tanto, pela responsabilidade de colocar o sistema no ar e pelo timing do projeto. Todo o site e a integração com o sistema legado (onde algumas informações ainda estão sendo gerenciadas), tiveram que sair do simples &#8220;create [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2010%252F01%252F10%252Fportal-imobiliario-usando-groovy-e-grails%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F7iywM2%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Portal%20imobili%C3%A1rio%20usando%20Groovy%20e%20Grails%22%20%7D);"></div>
<p>Ontem (dia 09/01) fizemos o lançamento de um site que desenvolvemos usando <a href="http://lucastex.com.br/tag/groovy/" target="_blank">Groovy</a> e <a href="http://lucastex.com.br/tag/grails/" target="_blank">Grails</a>, um desafio e tanto, pela responsabilidade de colocar o sistema no ar e pelo timing do projeto. Todo o site e a integração com o sistema legado (onde algumas informações ainda estão sendo gerenciadas), tiveram que sair do simples &#8220;<em>create app</em>&#8221; para produção em 2 meses. Esse é também o grande motivo para a falta de tempo de postar mais por aqui.</p>
<p>Trata-se dos sites <a href="http://www.imoveisnomorumbi.com.br" target="_blank">http://www.imoveisnomorumbi.com.br</a> e <a href="http://www.imoveisnopanamby.com.br" target="_blank">http://www.imoveisnopanamby.com.br</a>, site de duas imobiliárias do mesmo grupo, que negocia imóveis de alto padrão nestes dois bairros.</p>
<p>Algumas informações interessantes sobre o projeto:</p>
<p><strong>Tecnologia e Infraestrutura:</strong> O site antigo usava <a href="http://pt.wikipedia.org/wiki/Microsoft_SQL_Server" target="_blank">SQLServer</a> como banco de dados e tecnologia <a href="http://pt.wikipedia.org/wiki/ASP" target="_blank">ASP</a>. Como usamos Groovy e Grails, por trás temos uma JVM <a href="http://pt.wikipedia.org/wiki/Plataforma_Java">Java</a> em execução, e o banco de dados, o bom e velho <a href="http://pt.wikipedia.org/wiki/MySQL">MySQL</a>.</p>
<p>Antes, para suportar o ASP, o <a href="http://pt.wikipedia.org/wiki/IIS">IIS</a> era usado como web server, e agora Um <a href="http://pt.wikipedia.org/wiki/Servidor_Apache">apache</a> balanceia as requisições aos dois <a href="http://pt.wikipedia.org/wiki/Tomcat">Tomcats</a>. Tudo isto está deployado e rodando em um Cloud Server da Locaweb, por opção do cliente, onde já mantinha a conta antiga.</p>
<p><strong>Integração com o sistema legado:</strong> Para a integração do modelo de dados antigo e o novo modelo, construímos rotinas de importação dos dados usando <a href="http://docs.codehaus.org/display/GROOVY/Tutorial+6+-+Groovy+SQL" target="_blank">Groovy SQL</a>, uma maneira <span style="text-decoration: line-through;"> fácil, </span> muito fácil, de fazer rotinas em banco de dados.</p>
<p><strong>Plugins utilizados: </strong>Ahhh, os bons e velhos plugins do Grails, não canso de dizer que esta é a melhor parte do Grails! Foram usados os plugins:</p>
<p><a href="http://grails.org/plugin/mail" target="_blank"><strong>Grails-Mail</strong></a>, para envio dos e-mails e formas de contato do site<br />
<a href="http://grails.org/plugin/acegi" target="_blank"><strong>Grails-Acegi</strong></a>, para autenticação e segurança<br />
<a href="http://grails.org/plugin/cookie" target="_blank"><strong>Grails-Cookie</strong></a>, para manipulação dos cookies do cliente<br />
<a href="http://grails.org/plugin/navigation" target="_blank"><strong>Grails-Navigation</strong></a> para criação de menus/submenus da interface administrativa<br />
<a href="http://grails.org/plugin/richui" target="_blank"><strong>Grails-RichUi</strong></a> para alguns componentes gráficos como auto-complete e nuvem de tags<br />
<a href="http://grails.org/plugin/runtime-logging" target="_blank"><strong>Grails-RuntimeLogging</strong></a>, um ótimo plugin para moder trabalhar com o nível de log de cada artefato (controller, service, etc), da app em runtime<br />
<a href="http://grails.org/plugin/settings" target="_blank"><strong>Grails-Settings</strong></a> para algumas parametrizações da aplicação.</p>
<p>E com certeza, se eu tivesse pesquisado com um pouco mais de tempo, teria usado outros plugins para evitar algum trabalho que tenha feito na mão. E é claro, além disso, bastante (mesmo) <a href="http://www.jquery.com" target="_blank">jquery</a>, <a href="http://pt.wikipedia.org/wiki/AJAX_%28programa%C3%A7%C3%A3o%29" target="_blank">ajax</a> e <a href="http://pt.wikipedia.org/wiki/Json" target="_blank">json</a>.</p>
<p>É isso, qualquer dúvida sobre o projeto, como aconteceu, soluções e problemas, basta comentar!</p>
<p>Obrigado a todos!</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2010/01/10/portal-imobiliario-usando-groovy-e-grails/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Envio de e-mails com o Mail Plugin</title>
		<link>http://lucastex.com.br/2010/01/02/envio-de-e-mails-com-o-mail-plugin/</link>
		<comments>http://lucastex.com.br/2010/01/02/envio-de-e-mails-com-o-mail-plugin/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 03:43:10 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=211</guid>
		<description><![CDATA[

Enviar e-mails a partir de uma aplicação Grails é extremamente fácil. Tudo graças ao Mail Plugin. Sou um grande fã do mecanismo de plugins do Grails não só pela facilidade de criá-los, mas principalmente pelo espírito de compartilhamento de código que isto gera nos desenvolvedores. É bem simples, por exemplo, se eu preciso de alguma [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2010%252F01%252F02%252Fenvio-de-e-mails-com-o-mail-plugin%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F7LOCfQ%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Envio%20de%20e-mails%20com%20o%20Mail%20Plugin%22%20%7D);"></div>
<p>Enviar e-mails a partir de uma aplicação <a href="http://grails.org" target="_blank">Grails</a> é extremamente fácil. Tudo graças ao <a href="http://grails.org/plugin/mail" target="_blank">Mail Plugin</a>. Sou um grande fã do mecanismo de plugins do Grails não só pela facilidade de criá-los, mas principalmente pelo espírito de compartilhamento de código que isto gera nos desenvolvedores. É bem simples, por exemplo, se eu preciso de alguma coisa que envie e-mails, vou construir isto separado da minha aplicação e distribuir para todos que precisem. Fácil, muito fácil!</p>
<p>Enfim, o Mail Plugin é um dos plugins mais antigos do Grails (acho que usei pela primeira vez em agosto de 2008), e um dos mais simples de ser usado. O primeiro passo é instalar o plugin como qualquer outro:</p>
<pre class="brush: groovy; title: ;">grails install-plugin mail</pre>
<p>Com isso as dependências serão baixadas e o plugin será instalado.</p>
<p>Após isso, você vai precisar configurar o envio de e-mail.<br />
De forma bem intuitiva novamente, diretamente em seu Config.groovy deverá setar as propriedades:</p>
<pre class="brush: groovy; title: ;">grails {
   mail {
      host     = &quot;smtp.meuservidor.com.br&quot;
      port     = 25
      username = &quot;usuario@provedor.com.br&quot;
      password = &quot;eusoul33t&quot;
      props    = [&quot;mail.smtp.auth&quot;: &quot;true&quot;, &quot;mail.smtp.socketFactory.port&quot;: &quot;587&quot;]
   }
}</pre>
<p>Ahhh, o exemplo acima já está pronto para usar validação de usuário e senha no envio, já que hoje (99%) dos servidores assim exigem. Pronto, com isso o plugin já consegue saber como o e-mail será enviado (por trás ele usa o envio de e-mails embutido no Spring, é claro).</p>
<p>Agora, quando for enviar um e-mail, basta usar a closure <strong>sendMail</strong> que é automaticamente adicionada em todos os seus controllers! Segue um exemplo:</p>
<pre class="brush: groovy; title: ;">sendMail {
   from &quot;lucas@testedoblog.com.br&quot;
   to &quot;dest1@email.com&quot;, &quot;dest2@email.com&quot;
   cc &quot;copia@email.com&quot;
   bcc &quot;oculto@email.com&quot;
   subject &quot;Enviando e-mails com Grails&quot;
   body &quot;&quot;&quot;
      E ai pessoal,
      Este e-mail foi enviado diretamente de um controller da minha
      aplicação Grails usando o Mail Plugin.

      Até mais.&quot;&quot;&quot;
}</pre>
<p>Pronto, agora é só checar as caixas de e-mail! Vale lembrar que as instruções <strong>cc</strong> e <strong>bcc</strong> não são obrigatórias!</p>
<p>O plugin suporta envio de anexos, conteúdo HTML e outras opções. Para mais detalhes, consulte a <a href="http://grails.org/plugin/mail" target="_blank">documentação oficial</a>, ou deixe um comentário aqui.</p>
<p>Ahh, e se quiser usar uma caixa do GMail para enviar as mensagens, use a configuração abaixo.</p>
<pre class="brush: groovy; title: ;">grails {
   mail {
      host     = &quot;smtp.gmail.com&quot;
      port     = 465
      username = &quot;seulogingmail@gmail.com&quot;
      password = &quot;suasenhadogmail&quot;
      props    = [&quot;mail.smtp.auth&quot;: &quot;true&quot;,
                  &quot;mail.smtp.socketFactory.port&quot;: &quot;465&quot;,
                  &quot;mail.smtp.socketFactory.class&quot;: &quot;javax.net.ssl.SSLSocketFactory&quot;,
                  &quot;mail.smtp.socketFactory.fallback&quot;: &quot;false&quot;]
   }
}</pre>
<p>Feliz 2010, ao som de &#8220;Dream Theater &#8211; Don&#8217;t look past me&#8221;.</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2010/01/02/envio-de-e-mails-com-o-mail-plugin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Enviando emails com Spring e Velocity</title>
		<link>http://lucastex.com.br/2009/10/08/enviando-emails-com-spring-e-velocity/</link>
		<comments>http://lucastex.com.br/2009/10/08/enviando-emails-com-spring-e-velocity/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 12:53:52 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Spring]]></category>
		<category><![CDATA[Velocity]]></category>
		<category><![CDATA[ioc]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=5</guid>
		<description><![CDATA[

Primeiro post do meu blog totalmente em português!
Esta semana, precisei adicionar na aplicação a funcionalidade de enviar e-mails usando templates do Velocity para o corpo do e-mail. Claro que o poderíamos usar o arroz com feijão do Velocity para isso, fazendo o merge do template com nosso contexto de variáveis, mas acabei esbarrando em um [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2009%252F10%252F08%252Fenviando-emails-com-spring-e-velocity%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Enviando%20emails%20com%20Spring%20e%20Velocity%22%20%7D);"></div>
<p>Primeiro post do meu blog totalmente em português!</p>
<p>Esta semana, precisei adicionar na aplicação a funcionalidade de enviar e-mails usando templates do <a href="http://velocity.apache.org/" target="_blank">Velocity</a> para o corpo do e-mail. Claro que o poderíamos usar o arroz com feijão do Velocity para isso, fazendo o merge do template com nosso contexto de variáveis, mas acabei esbarrando em um site, e descobri que o próprio <a href="http://www.springsource.org/" target="_blank">Spring</a> já possui um FactoryBean para a criação do meu VelocityEngine além de também ficar responsável com o carregamento dos templates (na minha opinião, a parte mais chata).</p>
<p>Bom, explicando brevemente como resolvi o problema:</p>
<ul>
<li>Bean <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/ui/velocity/VelocityEngineFactoryBean.html" target="_blank">VelocityEngineFactoryBean</a></li>
</ul>
<p>Defini este bean no applicationContext.xml para controlar a injeção do <a href="http://www.jdocs.com/velocity/1.5/org/apache/velocity/app/VelocityEngine.html" target="_blank">VelocityEngine</a></p>
<pre class="brush: xml; title: ;">&lt;bean id=&quot;velocityEngine&quot; class=&quot;org.springframework.ui.velocity.VelocityEngineFactoryBean&quot;&gt;
  &lt;property name=&quot;resourceLoaderPath&quot; value=&quot;/WEB-INF/templates/&quot; /&gt;
&lt;/bean&gt;</pre>
<p>Notem que a propriedade <strong>resourceLoaderPath </strong>já é definida ali, e é neste diretório indicado que os templates deverão estar.</p>
<ul>
<li>Bean <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/mail/javamail/JavaMailSender.html" target="_blank">JavaMailSenderImpl</a></li>
</ul>
<p>Este bean do core do spring já encapsula o envio da mensagem, neste exemplo, está configurado com estas propriedades que vieram de um arquivo de propriedades que carreguei no início do meu applicationContext.xml</p>
<pre class="brush: xml; title: ;">&lt;bean id=&quot;mailSender&quot; class=&quot;org.springframework.mail.javamail.JavaMailSenderImpl&quot;&gt;
  &lt;property name=&quot;host&quot; value=&quot;${mail.smtp.host}&quot; /&gt;
  &lt;property name=&quot;username&quot; value=&quot;${mail.smtp.user}&quot; /&gt;
  &lt;property name=&quot;password&quot; value=&quot;${mail.smtp.pass}&quot; /&gt;
  &lt;property name=&quot;port&quot; value=&quot;${mail.smtp.port}&quot; /&gt;
&lt;/bean&gt;</pre>
<ul>
<li>Bean <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/mail/SimpleMailMessage.html" target="_blank">SimpleMailMessage</a></li>
</ul>
<p>Este é o bean que será o template da mensagem. É um &#8220;modelo&#8221; de mensagem, que carrega o endereço &#8216;from&#8217; e também o subject do e-mail do mesmo arquivo de configuração.</p>
<pre class="brush: xml; title: ;">&lt;bean id=&quot;templateMailMessage&quot; class=&quot;org.springframework.mail.SimpleMailMessage&quot;&gt;
  &lt;property name=&quot;from&quot; value=&quot;${mail.from}&quot; /&gt;
  &lt;property name=&quot;subject&quot; value=&quot;${mail.subject}&quot; /&gt;
&lt;/bean&gt;</pre>
<p>Com isso, já tenho os 3 beans que serão injetados em meu componente de envio de e-mails.</p>
<ul>
<li>Template velocity do e-mail</li>
</ul>
<p>O template que eu criei para o teste é bem simples e segue abaixo. Se chama <strong>mail.vm</strong> e como dito ali em cima, está dentro de <strong>/WEB-INF/templates/</strong></p>
<pre class="brush: css; title: ;">Oi ${nome}, seu e-mail (${email}) foi cadastrado no sistema.</pre>
<ul>
<li>Componente final para o envio do e-mail</li>
</ul>
<p>Chamei o componente de MailComponent (bem criativo, né?), e a única coisa que ele faz, é receber os beans que definimos via injeção, criar uma nova mensagem usando o template de e-mails e setar como body da mensagem o resultado do merge entre o template e as minhas variáveis. Segue o código do componente.</p>
<pre class="brush: java; title: ;">import java.util.HashMap;
import java.util.Map;

import org.apache.velocity.app.VelocityEngine;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Component;
import org.springframework.ui.velocity.VelocityEngineUtils;

@Component
public class MailComponent {

  @Autowired
  private MailSender mailSender;

  @Autowired
  private SimpleMailMessage templateMailMessage;

  @Autowired
  private VelocityEngine velocityEngine;

  public void sendMail(String template, Stirng nome, String email, String ... to) {

    Map&lt;String, Object&gt; ctx= new HashMap&lt;String, Object&gt;() {{
      put(&quot;nome&quot;, nome);
      put(&quot;email&quot;, email);
    }};

    String body = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, template, ctx);
    SimpleMailMessage msg = new SimpleMailMessage(this.templateMailMessage);
    msg.setTo(to);
    msg.setText(body);

    mailSender.send(msg);
  }
}</pre>
<p>Pronto, o componente está pronto, agora a qualquer momento, em qualquer classe (que tenha acesso ao contexto de DI do spring é claro) você poderá chamar o seu componente</p>
<pre class="brush: java; title: ;">@Autowired
private MailComponent mailComponent</pre>
<p>E enviar os e-mails aos usuários:</p>
<pre class="brush: java; title: ;">//Envia e-mail para o usuário com cópia ao admin
mailComponent.sendMail(&quot;mail.vm&quot;, &quot;Lucas&quot;, &quot;mail@mail.org&quot;, &quot;mail@mail.org&quot;, &quot;admin@site.org&quot;);</pre>
<p>É isso aí.</p>
<p>[]s,</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 122px; width: 1px; height: 1px;">VelocityEngineFactoryBean</div>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2009/10/08/enviando-emails-com-spring-e-velocity/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

