Autor Tópico: [duvida]flash developer(enviar mensagem para o mail)  (Lida 5929 vezes)

Offline luis_oliveira_3

  • Aprendiz
  • **
  • Mensagens: 92
    • Ver Perfil
[duvida]flash developer(enviar mensagem para o mail)
« em: 14 de Março de 2007, 10:28:33 »
Olá pessoal.
Deparei-me com um problema, que já não é novo pra mim, mas que nunca foi resolvido.
Tenho um input text e um button e queria que ao precionar o button a mensagem do input text fosse enviada para o mail.
O mail até abre, mas a mensagem está vazia.
Já agora o codigo foi o seguinte:

para o input text só coloquei a var:teste

button
on (release) {
   getURL("mailto:qqrcoisa@qqrcoisa.com","POST");
}

alguem sabe como resolver isto?
Agradeço a ajuda.

Offline yarcub

  • Aprendiz
  • **
  • Mensagens: 138
    • Ver Perfil
[duvida]flash developer(enviar mensagem para o mail)
« Responder #1 em: 14 de Março de 2007, 12:13:59 »
Oi, tens aqui a sintaxe do MailTo.

Enviar o email por php não é uma opção?

Offline alftuga

  • Aprendiz
  • **
  • Mensagens: 202
    • Ver Perfil
    • http://www.alftuga.net
[duvida]flash developer(enviar mensagem para o mail)
« Responder #2 em: 14 de Março de 2007, 12:30:38 »
Código: [Seleccione]

bt.onRelease = function (){
getURL("mailto:meumail@meudominio.com?subject=xpto&body=messagem")
}

tenta assim mas tens que testar online e não funciona em todas as configurações.

Offline luis_oliveira_3

  • Aprendiz
  • **
  • Mensagens: 92
    • Ver Perfil
[duvida]flash developer(enviar mensagem para o mail)
« Responder #3 em: 14 de Março de 2007, 22:58:13 »
O php é uma boa opção, o problema é que eu não entendo aqueles gafanhotos. Não é facil perceber uma linguagem, quanto mais 2 ou 3.
O codigo do alftuga funciona, mas não consigo enviar para o "body" o texto inserido num "input text". O "body" será literalmente o que escrevemos á frente, neste caso é "mensagem".
Não há maneira de contornar isso?

Offline gimbras

  • Emblema de Prata
  • ****
  • Mensagens: 1105
    • Ver Perfil
    • NoFuturo.com
[duvida]flash developer(enviar mensagem para o mail)
« Responder #4 em: 15 de Março de 2007, 01:03:48 »
É tudo muito simples.

Criamos a caixa de texto do tipo INPUT, e damos-lhe o instance name mensagem_txt.

Depois criamos um botão com o instance name botao e inserimos o seguinte código na primeira frame da timeline.

Código: [Seleccione]
botao.onRelease = function(){
getURL("mailto:meumail@meudominio.com?subject=xpto&body="+mensagem_txt.text);
}


E voilá.

Já volto cá para explicar como usar o PHP para enviar mails a partir de um SWF.

Cumps.

Offline luis_oliveira_3

  • Aprendiz
  • **
  • Mensagens: 92
    • Ver Perfil
[duvida]flash developer(enviar mensagem para o mail)
« Responder #5 em: 15 de Março de 2007, 11:28:33 »
Agora funciona, obrigado.

Offline gimbras

  • Emblema de Prata
  • ****
  • Mensagens: 1105
    • Ver Perfil
    • NoFuturo.com
[duvida]flash developer(enviar mensagem para o mail)
« Responder #6 em: 15 de Março de 2007, 13:10:39 »
Agora podes utilizar isto em conjunto com o PHP.
Aliás o PHP é muito simples e intuitivo.

Usando o mesmo exemplo.

Temos uma caixa de texto do tipo INPUT com o instance name mensagem_txt.

Na primeira frame da timeline colocamos o seguinte código ActionScript.

Código: [Seleccione]
botao.onRelease = function(){
var envio:LoadVars = new LoadVars();
envio.corpo = mensagem_txt.text;
envio.sendAndLoad("pagina.php",resposta,"POST");
}

O que é que isto faz?

OK, ao clicarmos no botão (com instance botao) é iniciada a função que cria um objecto chamado "envio" do tipo LoadVars que irá conter na sua instância "envio" o conteúdo (.text) da caixa de texto mensagem_txt.

Depois o objecto "envio" através do seu método sendAndLoad irá enviar para a página PHP de destino "pagina.php" [é esta página que irá processar a informação vinda do SWF] o conteúdo da variável "corpo" (que por sua vez contém o texto da caixa mensagem_txt), e carregará (a parte do sendAndLoad) o objecto de destino "resposta", isto tudo através do method "POST".

Para conseguirmos saber se o mail foi enviado, ou pelo menos para ficarmos a saber que toda esta operação correu bem, criamos outro objecto do tipo LoadVars com esse mesmo nome que acabámos de definir no objecto de destino: "resposta". E para o Flash saber o que é ele depois de clicarmos no botao "botao" temos de defini-lo antes de definirmos o que acontece ao clicarmos no botão. (O Flash lê o código de cima para baixo, se colocássemos a seguinte definição depois de dizermos o que acontece quando clicamos no botão, o gajo ficava sem saber o que fazer.)

Sendo assim ficamos com o seguinte código.

Código: [Seleccione]
var resposta:LoadVars = new LoadVars();
resposta.onLoad = function(){
sucesso_txt.text = "Mail enviado";
}

botao.onRelease = function(){
var envio:LoadVars = new LoadVars();
envio.corpo = mensagem_txt.text;
envio.sendAndLoad("pagina.php",resposta,"POST");
envio.sendAndLoad(
}

A primeira parte (a outra já expliquei) diz que é criado um objecto de seu nome "reposta" do tipo LoadVars, quando o objecto "resposta" é carregado (.onLoad) é executada uma função que atribui à caixa de texto com o instance name sucesso_txt a string "Mail enviado" (obviamente temos de criar no Stage uma caixa de texto do tipo DYNAMIC com esse nome de instância: "sucesso_txt").

Agora temos de criar a página PHP com o nome "pagina.php"

Eis o código.

Código: [Seleccione]
<?PHP
$to = "mail@dominio.com";
$subject = "Assunto";
$body = $_POST['corpo']; // definição da variável

mail($to, $subject, $body);
?>

Explicação: são criadas as variáveis $to, $subject e $corpo. A $to é o endereço de mail do destinatário, a $subject o assunto da mensagem de mail e o $corpo será a mensagem propriamente dita que irá receber o valor da variável que vem do Flash com o nome "corpo" através do método POST.

Depois é executada a função mail do PHP (bastante simples, não?) onde essas 3 variáveis são usadas como argumentos.

E pronto, mail enviado.

Cumps.
« Última modificação: 5 de Julho de 2007, 01:01:32 por gimbras »

Offline yarcub

  • Aprendiz
  • **
  • Mensagens: 138
    • Ver Perfil
[duvida]flash developer(enviar mensagem para o mail)
« Responder #7 em: 15 de Março de 2007, 16:22:06 »
Boa explicação gimbras, mas na confirmação estás a fazer batota.:P
Estás a dizer ao utilizador que o email foi enviado sem receber a confirmação.

Só um acrescento:
no php
Código: [Seleccione]
<?PHP
$to = "mail@dominio.com";
$subject = "Assunto";
$corpo = $_POST['corpo']; // definição da variável

$enviado = mail($to, $subject, $body);

echo "&enviado=" . $enviado;
?>


no flash
Código: [Seleccione]
var resposta:LoadVars = new LoadVars();
resposta.onLoad = function(){
   if(this.enviado){
       sucesso_txt.text = "Mail enviado";
   }else{
       sucesso_txt.text = "Mail não enviado";
   }
}

botao.onRelease = function(){
   var envio:LoadVars = new LoadVars();
   envio.corpo = mensagem_txt.text;
   envio.sendAndLoad("pagina.php",resposta,"POST");
}

Offline gimbras

  • Emblema de Prata
  • ****
  • Mensagens: 1105
    • Ver Perfil
    • NoFuturo.com
[duvida]flash developer(enviar mensagem para o mail)
« Responder #8 em: 15 de Março de 2007, 17:53:02 »
Certo, mas o PHP nunca tem hipótese de verificar se, efectivamente, o mail foi ou não enviado.
Só sabe de a função mail foi ou não executada com sucesso.
Nada mais, porque não pode verificar se o servidor de mail cumpriu a sua função, ou se a caixa de mail de destino recebeu ou não o mail (pode estar cheia ou pode nem existir).

No teu código se a variável "enviado" for true o gajo diz que enviou o mail, mesmo assim nunca se saberá ao certo se ele foi mesmo entregue. :D

Resta ao programador esperar que o servidor de mail mande um erro ou nem por isso. ;)

Cumps.

Offline yarcub

  • Aprendiz
  • **
  • Mensagens: 138
    • Ver Perfil
[duvida]flash developer(enviar mensagem para o mail)
« Responder #9 em: 15 de Março de 2007, 18:04:36 »
Certo.
Mas se por exemplo o servico SMTP do servidor estiver offline por alguma razão sempre é melhor que nada.

Offline gimbras

  • Emblema de Prata
  • ****
  • Mensagens: 1105
    • Ver Perfil
    • NoFuturo.com
[duvida]flash developer(enviar mensagem para o mail)
« Responder #10 em: 16 de Março de 2007, 01:57:03 »
Ah, yah, aí sim, o gajo dá logo erro.

Cumps.

 




Roleta das Anedotas - Abre noutra janela