Enviando e-mail com Flex e ColdFusion

Salve galera!

Enviar e-mail com CF é muito simples, até banal! Com Flex não é diferente.

Vamos utilizar a integração simples do Flex com o CF para montar um formulário de contato!

Utilizaremos o Remote Object Services para realizar a conexão entre o Flex e o CF, através do FlashRemoting que já é padrão no CF 7 em diante.

Neste exemplo estou utilizando o Flex Builder 3 beta 2, que pode ser obtido através do link http://labs.adobe.com/technologies/flex/flexbuilder3/, para testes.

1. Com o Flex Builder aberto, selecione a perspectiva Flex Development.
2. Através do menu File selecione, File > New > Flex Project.
3. Dê o nome ao seu projeto (eu coloquei exemplos).
4. Valide a localização de sua app no CF.
5. em Application Type, selecione Web Application.
6. Em Server Tecnology, Application Server Type, escolha ColdFusion. Marque a caixa Use Remote Object Access Service e marque logo abaixo, ColdFusion FlashRemoting. Dê Next
7. Na próxima tela apenas valide a localização do servidor e dê Next.
8. Na próxima tela se quizer manter o nome apenas, de Finish, caso contrário de um nome, defina a pasta de exibição e Finish

Pronto. Agora vamos a nossa app.

O layout é bem simples e será baseado neste aqui:

Os itens em vermelho são os nomes de cada componente.

Abaixo o código:

<mx:Label x="10" y="10" text="Formulário de Contato - ColdFusion com Flex" fontWeight="bold" fontSize="16" color="#000000"/>

<mx:Label y="50" text="Nome do Remetente:" id="txt_nome_remetente" left="10" width="200" fontWeight="bold"/>
<mx:TextInput id="remetente" y="65" left="10" width="200"/>

<mx:Label y="50" text="E-mail do Remetente:" id="txt_email_remetente" left="240" width="200" fontWeight="bold"/>
<mx:TextInput id="remetente_email" y="65" left="240" width="200"/>

<mx:Label y="95" text="Nome do Destinatário:" id="txt_nome_destinatario" left="10" width="200" fontWeight="bold"/>
<mx:TextInput id="destinatario" y="110" left="10" width="200"/>

<mx:Label y="95" text="E-mail do Destinatário:" id="txt_email_destinatario" left="240" width="200" fontWeight="bold"/>
<mx:TextInput id="destinatario_email" y="110" left="240" width="200"/>

<mx:Label y="140" text="Assunto:" id="txt_assunto" left="10" width="200" fontWeight="bold"/>
<mx:TextInput id="assunto" y="155" left="10" width="430"/>

<mx:Label y="185" text="Mensagem:" id="txt_mensagem" left="10" width="200" fontWeight="bold"/>
<mx:TextArea height="60" id="mensagem" y="201" left="10" width="430"/>

<mx:Button label="Enviar E-mail" id="enviar_btn" left="240" height="26" width="200" y="279"/>

Feito isso vamos ao código.

No modo Source do Flex Builder, dentro da tag vamos inserir o seguinte código:

<mx:Script>
<![CDATA[

Çspan style='color: #808080'ÈÇemÈ //fazendo imports dos pacotes de alerta e do RPC
Ç/emÈÇ/spanÈimport mx.controls.Alert;
import mx.rpc.events.ResultEvent;

/*definindo uma função onde iremos chamar o método em nosso componente, que
faz o envio do e-mail, passando os valores dos campos do formulário*/

public function enviaEmail():void{
meuCFC.enviarEmail(
remetente.text,
remetente_email.text,
destinatario.text,
destinatario_email.text,
assunto.text,
mensagem.text
);
}

/*definindo uma Result onde damos uma alerta confirmando o envio da
mensagem e em seguida limpando os campos do fomrulário para nova postagem*/

private function onResult(e:ResultEvent):void{
Alert.show("Mensagem enviada com sucesso para " + destinatario_email.text,
"Informação", mx.controls.Alert.OK);
remetente.text = "";
remetente_email.text = "";
destinatario.text = "";
destinatario_email.text = "";
assunto.text = "";
mensagem.text = "";
}

]]>
</mx:Script>

É um código bem simples, está comentado e creio que não terão problemas em entendê-lo.

Agora vamos fazer uso da tag para conectar ao Server do CF e nosso componente:

<mx:RemoteObject id="meuCFC" destination="ColdFusion" source="estudosflex.exemplos.src.br.com.zellen.model.componentes" showBusyCursor="true">
<mx:method name="enviarEmail" result="onResult(event)" fault="Alert.show(event.fault.message, 'Erro')"/>
</mx:RemoteObject>

Bem simples também. Defini um nome para o serviço, chamado aqui de meuCFC, o destino, ColdFusion e o source do componente utilziado. Sem seguida defini o método a ser utilziado através da tag , chamado do result lá em cima e do fault exebindo a mensagem caso ocorra algum erro.

Para fazer uso da funçãoque criamos acima, enviaEmail, definimos ela no click do botão ficando:

<mx:Button label="Enviar E-mail" id="enviar_btn" click="enviaEmail()" left="240" height="26" width="200" y="279"/>

Agora nosso CFC.

Crie a seguinte estrutura de pastas para o nosso CFC. Dependendo das configurações de seu projeto elas podem variar.

estudosflex.exemplos.src.br.com.zellen.model

Dentro da pasta Model vamos criar o CFC componentes com o seguinte código:

<cfcomponent hint="componente para estudos">

<!--- funcao para enviar e-mails --->
<cffunction name="enviarEmail" access="remote" returntype="void">

<cfargument name="remetente" type="string" required="yes">
<cfargument name="remetente_email" type="string" required="yes">
<cfargument name="destinatario" type="string" required="yes">
<cfargument name="destinatario_email" type="string" required="yes">
<cfargument name="assunto" type="string" required="yes">
<cfargument name="mensagem" type="string" required="no">

<cfloop list="#arguments.destinatario_email#" delimiters=";" index="email">

<cfmail server="localhost" from="#arguments.remetente_email#" to="#Trim(email)#" subject="[TOFINHA] #arguments.assunto#" type="text/html" charset="iso-8859-1">
Olá #arguments.destinatario# [#arguments.remetente_email#],<br />
#arguments.remetente#, enviou essa mensagem a você:<br />
Assunto: #arguments.assunto#<br />
Mensagem: #arguments.mensagem#<br />
Em #dateFormat(now(), 'dd/mm/yyyy')#
</cfmail>
</cfloop>

</cffunction>

</cfcomponent>

Bem simples também, apenas uma função para enviar e-mail

Bom, agora é só compilar o projeto e fazer seus testes. Você pode agregar mais funcionalidades como validações, anexos, etc!

Para visualiza a aplicação clique aqui. Para obter os arquivos fontes, basta clicar com o botão direito e selecionar View Source!

Sucesso e até a próxima!

Posts do blog relacionadas

Comentários (A Moderação para comentários está habilitado. Seu comentário não aparecerá até ser aprovado.)
Carlos Eduardo's Gravatar bacana esse exemplo.
Tem como vc postar algo sobre CRUD?
To com dificuldade de realizar essas ações com o Flex, na verdade nem sei por onde começar. pelo exemplod e e-mail parece bem simples!
valeus aí
# Postado por Carlos Eduardo | 12/12/07 13:06
Italo's Gravatar Aí cara, legal esse exemplo. qualse não encontro material de integração entre o cf e o flex.
se puder postar tb usando login, inserts, updates, seria banaca. de reppente uma aplicação completa usando flex e cf, com listagem, insert, update e exclusão.
ajuda a gente aí!!hehehehehe
sucesso com a Zellen!
# Postado por Italo | 12/12/07 13:09
Tofinha's Gravatar Obrigado Carlos e Italo.

Realizar as operações de CRUD integrando CF e Flex não é difícil.
Vou estar preparando algo nos próximos dias e no próximo post começamos a nossa pequena app!
obrigado pelas dicas!
# Postado por Tofinha | 13/12/07 00:42
Lucas Marçal's Gravatar Parabéns pela iniciativa pessoal
# Postado por Lucas Marçal | 13/12/07 01:17
Tofinha's Gravatar Grande Lucas, valeu cara!
Sucesso!
# Postado por Tofinha | 13/12/07 17:53
Leandro's Gravatar ae cara parabéns!
Excelente post, espero pelos demais!
já add seu feed!
abs
# Postado por Leandro | 14/12/07 11:37
BlogCFC was created by Raymond Camden. This blog is running version 5.9.002. Entre em Contato Clicky Web Analytics