Bom galera vou ensinar como se faz um simples formulário de e-mail em AS3 + PHP
Nesse tutorial eu tive ajuda do silverFox do iMasters para deixar meu código PHP melhor desenvolvido e com melhor configuração 🙂
Bom vamos ao que importa
A imagem base do meu e-mail está assim para quem quiser copiar o layout
Bom vamos lá
O que é necessário para esse e-mail
2 botões: um intânciado de btenviar outro btreset
4 campos de texto:
1 para nome intânciado nome.
1 para email instânciado email.
1 para mensagem intânciado mensagem.
1 para o status do e-mail intânciado stats.
Pronto já temos todos os campos necessários para o flash
Crie uma camada e coloque os 2 botões nela
Crie outra camada e coloque todos os campos de texto nela
Crie agora uma camada para o ActionScript:
Coloque o código na camada ActionScript:
//Criando as variáveis necessárias
var loader:URLLoader = new URLLoader();
var req:URLRequest = new URLRequest(“mail.php”); //coloque no lugar de mail.php o nome de seu formulário php no caso o meu foi mail.php
var variables:URLVariables = new URLVariables();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
req.method = URLRequestMethod.POST;
//fim//Colocando o tabIndex para utilização de tab para mudar de campo
nome.tabIndex = 0;
email.tabIndex = 1;
mensagem.tabIndex = 2;
//fim//Colocando o listener para verificar os campos
nome.addEventListener(Event.CHANGE, vererro);
email.addEventListener(Event.CHANGE, vererro);
mensagem.addEventListener(Event.CHANGE, vererro);
function vererro(event:Event):void {
if (stats.text.length>0) {
stats.text = “”;
}
}
//fim//Colocando os botões
btenviar.addEventListener(MouseEvent.CLICK, sendForm);
btreset.addEventListener(MouseEvent.CLICK, resetForm);
//fim//Valida o formulário e envia
function sendForm(evt:MouseEvent):void {
if (nome.text.length<=0) {
stats.text = “Por favor preencha o nome”;
} else if (!email.text.length || email.text.indexOf(“@”) == -1 || email.text.indexOf(“.”) == -1) {
stats.text = “Email inválido ou inexistente”;
} else if (mensagem.text==””||mensagem.text.length<=1) {
stats.text = “Por favor digite sua mensagem”;
} else {
stats.text =”Enviando e-mail”;
variables.nome = nome.text; //coloco dentrode variables os campos nome, email e mensagem.
variables.email = email.text;
variables.mensagem = mensagem.text;
req.data = variables; //Adiciono ao data do URLRequest as variáveis dos campos
loader.load(req); //Envio para o php
loader.addEventListener(Event.COMPLETE, receiveLoad); //Ao termino da leitura do php carrego a função de recebimento de variável.
}
}
//fim//Pega a informação carregada do php
function receiveLoad(evt:Event):void {
if (evt.target.data.retval == 1) { //Verifico se a variavel de retorno retval está com o valor 1 ou 0 e aplico as fuções
stats.text = “E-mail enviado”;
} else {
stats.text=”Erro ao enviar o e-mail”;
}
}
//fim//Reseta formulário
function resetForm(evt:MouseEvent):void {
nome.text=””;
email.text=””;
mensagem.text=””;
}
//Fim
Todas as funções já estão devidamente comentadas
Agora vamos ao php:
if(isset($_POST[‘email’]) && isset($_POST[‘nome’]) && isset($_POST[‘mensagem’])){
$nome = $_POST[‘nome’];
$from = $_POST[‘email’];
$mensagem = $_POST[‘mensagem’];$email_subject = “E-mail do site”; // Assunto do e-mail
$email_to = “seuemail@mail.com”; // pra onde vai o e-mail
$headers = “From: “.$from;
$semi_rand = md5(time());
$mime_boundary = “==Multipart_Boundary_x{$semi_rand}x”;$headers .= “\nMIME-Version: 1.0\n” .
“Content-Type: multipart/mixed;\n” .
” boundary=\”{$mime_boundary}\””;$email_message = “Mensagem:”. $mensagem. ”
“;
$email_message .= “\n\n–{$mime_boundary}\n”;
$email_message .= “Content-Type:text/html; charset=\”iso-8859-1\”\n”;
$email_message .= “Content-Transfer-Encoding: 7bit\n\n”;
$email_message .= “Esse e-mail foi enviado pelo site
“;
$email_message .= ”
Nome do cliente:
“. $nome. ”
“;
$email_message .= ”
E-mail do cliente:
“. $from .”
“;
$email_message .= ”
Mensagem:
” .$mensagem. ”
” . “\n\n”;$ok = @mail($email_to, $email_subject, $email_message, $headers);
if($ok){
echo “&retval=1&”;
}else{
echo “&retval=0&”;
}
}
else {
echo “O e-mail não existe”;
}
?>
Espero que gostem
Bom proveito e bom trabalho
Para baixar clique aqui
Erro mais comum pelo que vejo nos comentários é o de URLVariables.decode()
Para isso podemos usar:
variables = new URLVariables();
variables.nome = nome.text;
variables.email = email.text+”&”;
variables.mensagem = mensagem.text+”&”;
Para arrumar.
Outra coisa que muitas pessoas se descambelam é AHHHHH não chega o email fica na tela o enviando eternamente.
1 – Crie um arquivo em HTML normal e coloque nome, email e texto e chame coloque o formulário apontado para mail.php… se a função mail funcionar vc tem que receber um email, caso contrario vai receber um erro em tua tela apontando onde está o problema.
2 – Cheque se seu servidor precisa de SMTP para enviar se precisar baixe a classe PHPMailer
Abraços e até a proxima
Oba amigão beleza, belo tutorial
segui, conforme esta ai
mas quando eu coloque ele no meu servidor ele da erro de e-mail
não envia
(meu servidor tem suporte a PHP )
não sei oque pode estar acontecendo ???
a unica alterção que eu fiz foi no PHP, que coloquei dois e-mails como destinatarios separados por ( , )virgula
abração
se vc puder me dar uma ajudinha
pois ja tentei de varias formas
meu e-mail é
docestilo@hotmail.com
abraços e fique com Deus
Colocou assim ??
$email_to = “email1@gmail.com,email2@gmail.com”; // pra onde vai o e-mail
Pois esse metodo funciona aqui perfeitamente…
Se não der sugiro esse link:
http://www.htmlite.com/php028.php
Fala Bersek!
Ótimo tutorial. Me ajudou bastante.
Só estou com um problema!
Fiz tudo direitinho, até copiei o código inteiro e botei no flash e no php, mas ele continua a dar no stats: “Erro ao enviar o e-mail”.
Os campos do formulário estão todos certinhos com suas devidas instâncias e tudo mais…
Se puder me ajudar, agradeço desde já..
Abraços…
Se isso está chegando é pq algum dado não deve ta sendo repassado para o PHP
Aqui:
$ok = @mail($email_to, $email_subject, $email_message, $headers);
if($ok){
echo “retval=1″;
}else{
echo “retval=0″;
}
Eu testo se o ok é true ou não se for true… ele faz o retval = 1 se não ele faz o 0…
Esse tipo de configuração de envio de e-mail pode não ser aceito pelo seu servidor.
Verifique com eles se seu mail.php está correto com os parametros que eles informam
Abraços
Ola parabens pela sua iniciativa muito bom o tutorial,seria possivel re upar o exemplo para download, pois o mesmo esta fora do ar.
Flw abração.
Arquivo atualizado para download
Obrigado pela atenção 😉
Boas, desde já queria dar os parabéns por ter postado este código.
Fiz tudo direitinho, acrescentei mais uns campos e alterei os layouts e no flash não me dá nenhum tipo de erro a não ser pelo output onde aparece esta mensagem:
Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
at Error$/throwError()
at flash.net::URLVariables/decode()
at flash.net::URLVariables()
at flash.net::URLLoader/onComplete()
o status fica a “enviar e-mail” sendo que a fazer publish em html acontece o mesmo, fica o status “a enviar” a não se passa nada depois.
Será por estar a trabalhar offline sem estar no servidor?
Agradeço disponibilidade 🙂
abraço
Exatamente, o código precisa estar online, afinal ele chama um código PHP, se ele não tiver esse php ele deixa de funcionar.
Mas o que ta errado é que voce ta tentando passar uma string sem decodificar a mesma… é isso que está escrito no seu erro, de uma olhada de como você está passando esses dados.
Abraços
Eu apenas fiz copy paste e alterei os dados, inseri o mail onde estava indicado.
Como descodifico a string? sou um bocado leigo nesta matéria :s primeir vez a utilizar alguma coisa feita em php. Se puder ajudar agradecia.
Abraço
Mas, vc precisa colocar em um servidor php isso para testes… sem servidor n vai funcionar.
num tem que alterar nada no php… soh colocar online e ver se funciona… baixa o exemplo altera o email e testa
Abs
Ae fera, mto bom seu formulario, mas estou testando em varios servidores e todos daum erro “Erro ao enviar o e-mail”, já conferi tudo e nuam tem geito poderia me ajudar.
http://www.floripasaquecedores.com.br/teste/flash.swf aqui está arquivo.
abs
Coloque o & no retval
if($ok){
echo “&retval = 1&”;
}else{
echo “&retval = 0&”;
}
Abraços
belezaa…funcionou agora vou tentar montar meu formulario;..
tens algum modelo parecido com este http://www.floripasaquecedores.com.br/teste/Orcamento.jpg
abraçosss..
Olá, seu formulario é otimo é bem como eu uso. Estou com um pequeno problema preciso fazer ele com a opção de enviar um arquivo em anexo. Seria possivel???
Obraçoss
Olha possivel é se teria que olhar o Form de AS 2 e usar o Filereference etc em AS 3… o PHP vai ser o mesmo para o AS 3
Da uma olhada em [TUTORIAL]Formulário de E-mail em AS2 + PHP + Anexos é o mesmo código só que isso ta em AS 2 você teria que fazer o form em AS 3 com listeners etc.
Abraços
nossa tentei fazer isso hj, não estou conseguinto é bem confuso pois não estou acostumada a usar o as2. 😦
Não teria um tutorial já em as3??
Desculpe a ignorancia, mas onde devo colocar o usuario e senha do email que quero enviar?
Desde ja agradeço.
Att,
Denis Peres
Esse sistema de email não utiliza SMTP.
Caso queira utilizar SMTP procure por PHPMailer e de uma lida sobre isso.
Abraços
berseck, seguinte… fiz o formulario em flash só que quando roda no dominio (online) funciona normal ex: http://www.meudominio.com.br/contato.swf mas quando coloco ele na minha pagina nao funciona de jeito nenhum… ex: http://www.meudominio.com.br (quando se clica em contatos) o que estou fazendo de errado? como pode funcionar sozinho (swf) e nao funcionar no site se é o mesmo script de envio em PHP e e mesmo arquivo swf????
Vlw pela força galera e desculpe minha ignorancia!
Marcelo.
Da uma verificada no caminho onde se encontra o arquivo mail se ele não se encontrar na mesma pasta que o SWF você pode encontrar problemas.
Caso estejam na mesma pasta mas mesmo assim continua com erros coloque o caminho completo… exemplo: http://www.seudominio.com.br/mail.php
Abraços
nao funcionou….
stop();
SystemUseCodePage = true
loadVariables(‘http://www.meudominio.com.br/send_email2.php’, this, ‘POST’);
message_status.text = “enviando, por favor aguarde…”;
var i = 0;
function check_status()
{
if( success == “yes” )
{
message_status.text = “Sua Mensagem foi enviada com Sucesso!”;
PS: com aspas duplas funciona tb no swf…
no site fica so no Enviando mesagem e nao envia!
Ta faltando informação cade o this.success ou object que vai ser responsavel pelo retorno?
E meu tutorial não tem nada disso em AS 3… e o em AS 2 não é feito assim. Sugiro você baixar o exemplo e ver como funciona.
Ta faltando o retorno.
Abraços
Desculpa… tai o completo…
stop();
SystemUseCodePage = true
loadVariables(‘http://www.meudominio.com.br/send_email2.php’, this, ‘POST’);
message_status.text = “enviando, por favor aguarde…”;
var i = 0;
function check_status()
{
if( success == “yes” )
{
message_status.text = “Sua Mensagem foi enviada com Sucesso!”;
play();
}
else if( success == “no” )
{
message_status.text = “Sua Mensagem não pode ser enviada. Por Favor, tente novamente.”;
gotoAndStop(“stop”);;
}
if( i >= 20 )
clearInterval(interval_id);
i++;
}
var interval_id = setInterval(check_status, 400);
você deve fazer assim:
var obj:Object = new Object;
obj.nome = nome.text
// faça a mesma coisa para toda as variaveis que você quer enviar.
obj.sendAndLoad(“http://www.meudominio.com.br/send_email2.php”, obj, ‘POST’);
obj.onLoad = function()
{
if(obj.success == “yes”)
// faz sua mensagem aqui;
else
// mensagem de erro aqui
}
No php faça
echo “&success=yes”; e outra coisa com a resposta do mail.
De uma lida aqui
Abraços
Boa noite, sou leigo no assunto de flahs+php e estou com um problema no meu formulário, já testei ele online e não vai, estou com o mesmo problema do André, onde aparece o seguinte erro:
Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
at Error$/throwError()
at flash.net::URLVariables/decode()
at flash.net::URLVariables()
at flash.net::URLLoader/onComplete()
O que preciso fazer para que corrigir este erro? Obrigado.
Então como eu respondi ao outro colega, coloque o endereço do mail.php online e teste localmente e vc verá o que acontece.
Baixe o exemplo colocado para download que você poderá ver como foi feito.
Não há alterações no código em relação ao escrito.
Abraços
Então já subi o arquivo e testei online, não funciona! =/
Estou usando AS3 devido ao liquid layout, o menu, cabeçalho, rodapé estou puxando como movie clip, será que é por isso?
Não tem nada a ver… se você fez tudo direito ele tem chamar tudo corretamente. Agora se tiver um erro no script ele vai quebrar todo o resto.
Aviso logo que meu blog tem problemas com aspas simples e aspas duplas, sinal de menos e as vezes X.
De uma olhada nisso tudo.
Abraços
Bommmm, fiz um formulário utilizando ASP e agora deu certo, não sei se é isso mais acho que meu plano de hospedagem não aceita o PHP =/
Mesmo assim, fico grato por ter me respondido e tentado me ajudar.
Abraços
ola , estava usando seu tuto para um formulario que entra com um 3Dzinho no cs4, por isso tive que usar as3 , copiei seu codigo e fiz todos os passos indicados mas da um monte de erro … e minha animaçao trava .. poderia me ajudar? thanks
Quais são os erros… sem eles eu não adivinho 🙂
Abraços
entao.. o erro de ontem ja resolvi.. mas na hora de enviar da esse erro ;
Error: Error #2101: A String passada para URLVariables.decode() deve ser uma string de consulta codificada em URL que contém pares de nome/valor.
at Error$/throwError()
at flash.net::URLVariables/decode()
at flash.net::URLVariables()
at flash.net::URLLoader/onComplete()
o que esta acontecendo ?
grato
Testou online???
Pois só pode fazer URLVariables.decode quando ele recebe informação do servidor, caso contrario ele não consegue faz isso e devolve um erro.
Pois ele não encontra funções necessárias para fazer isso localmente.
Abraços
Primeiro parabéns pela iniciativa, mas estou com o mesmo problema de alguns:
Error: Error #2101: A String passada para URLVariables.decode() deve ser uma string de consulta codificada em URL que contém pares de nome/valor.
at Error$/throwError()
at flash.net::URLVariables/decode()
at flash.net::URLVariables()
at flash.net::URLLoader/onComplete()
testei on line e nada. Fiz isso:
if($ok){
echo “&retval = 1&”;
}else{
echo “&retval = 0&”;
}
e continua dando o mesmo erro. Se puder ajudar.
obrigado
Opa, fiz isso e o erro parou, porém ainda assim a mensagem fica “enviando email”
variables = new URLVariables();
variables.nome = form_mc.nome_txt.text;
variables.email = form_mc.email_txt.text+”&”;
variables.telefone = form_mc.tel_txt.text+”&”;
variables.mensagem = form_mc.coment_txt.text+”&”;
Lá no arquivo de PHP, dependendo do email que eu coloco, não funciona.
Todos os emails que tenho da Locaweb não funcionaram, o status fica “enviando email”.
Tente usando a PHPMailer
Colocando o SMTP etc.
Não tenho certeza se a LocaWeb funciona a função mail… da uma checada testando um PHP normal com ela
Abraços
Sim, tenho outros formulários de contato que funcionam na Locaweb.
Teste como eu falei só a função mail que vc está usando em conjunto com esse FLASH mas especifico para ver o que ela retorna, colocando os dados manualmente no lugar dos $_POST
Para ver se retorna
Corretamente isso: echo “&retval=1&”;
na tela
Abraços
Cara, pra ser sincero sou um 0 em PHP.
Eu estou usando exatamento o arquivo que vc deixou para download. Só alterei o email para meu email da locaweb.
Se eu uso outro funciona.
testa aí: ####
Editado para evitar problemas com o usuário
Te enviei 2 emails como teste
Você deve ter recebido os mesmos se não caiu na caixa de SPAM
Abraços
Usando o formulario em AS 3 com seu código em PHP ?
Exatamente… usando meu formulário só troquei o meu email e coloquei o seu
Nem tive que alterar nada… baixei o código que coloquei para download… e troquei os emails.
Abraços
Obrigado cara, testei agora e funcionou…não mudei nada…estranho !
Olá prezado Thiago
Cara só estou postando aqui pra agradecer mesmo a Deus, por ter colocado um cara no mundo como você. Muito obrigado mesmo pelo seu formulário que tu colocou para download. Muito bom.
É que fiz um curso de flash, mas é aquela velha história, não funcionou o contato, quase deixei de lado e continuei no meu CSS, mas então apareceu você com seu formulário.
Embora sei que tu faça isso de coração, me vejo na obrigação de lhe devolver com algo em troca.
Podemos faze assim: sou Designer Gráfico, trabalho com desenvolvimento de todo tipo de publicidade, caso precise , entre em contato que faço ae pra ti o que tu precisar, mano, tu merece mais que isso, mas é o que posso fazer no momento pra retribuir ae seu atendimento.
Então fica assim. Um abração e se precisar de algo estou na área.
at+
Jonatham F. Costa
Fiz um formulário em html e o email chegou normal, mas no flash aparece “enviando” eternamente, fiz tudo o que você disse, mas nada faz funcionar, o que pode ser? ):