Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago de Oliveira Cruz

[TUTORIAL]Formulário de E-mail em AS2 + PHP + Anexos

Recommended Posts

Berseck, pelo amor de Deus,

o erro continua cara, os arquivos chegam perfeitamente no servidor, mas no email as vezes chega outras não, parece q tenho q anexar o mesmo arquivos umas 3 ou 4 vezes para chegar, e aparece outros arquivos "undefined" também, tentei tudo cara.

"mensagem enviada com sucesso" aparece, os campos de textos chegam sem problemas, mas os arquivos já estão me matando de raiva.

 

Poderia dar uma olhada nos códigos, poderia mandá-lo ?

 

Muito obrigado, antecipadamente.

 

rafael

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode mandar sim

 

Manda por MP

Que é melhor

 

Mas estranho estar acontecendo isso... pois eu testei diversas vezes e funcionou perfeitamente em 4 servers diferentes...

Você já baixou a nova versão??

 

Eu atualizei o código

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa desenterrar esse topico, mas eu tenho uma duvida, e muita gente tem procurado sobre isso na internet...

 

Tipo, eu to fazendo um cadastro de casting (tipo um banco de curriculos) e preciso apenas de 1 arquivo por pessoa,

nao precisando do datagrid, como eu faço isso? Não sei que códigos posso tirar (referentes ao datagrid)

 

Obrigado pela sua ajuda

 

abraççççç

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 Tutorial nunca se desenterra... você só ta perguntando como fazer.

 

A parte do dataGrid é só remover tudo relacionado a ele cellClick etc... e usar uma variavel para receber o valor do anexo... na parte do filereference... feito isso só enviar essa variavel para o loadVars e esse para o php...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

FAlae berseck, mais uma vez te chateando com duvidas kkkk

 

Eu to um pouco Muito perdido nesse cogido. Pq tipo, eu fiz oq você falo, tirei as coisas de datagrid, e tals, só que acho q tirei coisa de mais kkkk, e ai perdi o raciocínio todo... vo te mostrar o codigo ai você ve pra mim?

 

//Importo as classes necessárias
import flash.net.FileReference;

//Uso codificação que leia os acentos
System.useCodepage = true;

//Index
btBrowse.tabEnabled = false;
enviar.tabEnabled = false;
limpar.tabEnabled = false;

// Declara os campos de texto como vazios;
nome = "";
idade = "";
telefone = "";
endereco = "";
bairro = "";
escolaridade = "";
manequim = "";
altura = "";
sapato = "";
tFile = "";
status = "";
var a:Array = new Array();
var a2:Array = new Array();
var count:Number = 0;
var inic:Number;
var t:Number = 0;


// Cria as variaveis que carregam os dados para o envio
var obj_s = new LoadVars();
var obj_l = new LoadVars();


bt_enviar.onPress = function(){
 if (nome.text == "") {
   status.text = "O nome esta vazio";
   selection.setFocus("nome");
 } else if (idade.text == "") {
   status.text = "Faltou a idade";
   Selection.setFocus("idade");
 } else if (telefone.text == "") {
   status.text = "Faltou o Telefone";
   Selection.setFocus("telefone");
 } else if (endereco.text == "") {
   status.text = "Faltou o Endereco";
   Selection.setFocus("endereco");
 } else if (bairro.text == "") {
   status.text = "Faltou o Bairro";
   Selection.setFocus("bairro");
 } else if (escolaridade.text == "") {
   status.text = "Faltou a Escolaridade";
   Selection.setFocus("escolaridade");
 } else if (manequim.text == "") {
   status.text = "Faltou o Manequim";
   Selection.setFocus("manequim");
 } else if (altura.text == "") {
   status.text = "Faltou a Altura";
   Selection.setFocus("altura");
 } else if (sapato.text == "") {
   status.text = "Faltou o Sapato";
   Selection.setFocus("sapato");
    } else {
        obj_s.nome = nome.text; //Valor do nome
        obj_s.idade = idade.text; //valor do e-mail
   	obj_s.telefone = telefone.text; //valor da Empresa
	obj_s.endereco = endereco.text; //valor do Cargo
   	obj_s.bairro = bairro.text; //valor do Telefone
   	obj_s.escolaridade = escolaridade.text; //valor do Evento
   	obj_s.manequim = manequim.text; //valor do Dia
   	obj_s.altura = altura.text; //valor da Quantidade
   	obj_s.sapato = sapato.text; //valor do Local
        obj_s.sendAndLoad("mail.php",obj_l,"POST"); //Envio as variáveis para o php
        obj_l.onload = sentMail;
    }
}

function sentMail(){
    if(obj_l.ok == 1){
        nome.text = "";
  	idade.text = "";
  	telefone.text = "";
  	endereco.text = "";
  	bairro.text = "";
  	escolaridade.text = "";
  	manequim.text = "";
  	altura.text = "";
  	sapato.text = "";
        status = "mensagem enviada";
    }else {
        status = "erro ao enviar";
    }
}
//Botão que limpa o conteudo dos campos de texto
limpar.onPress = function(){
  nome.text = "";
  idade.text = "";
  telefone.text = "";
  endereco.text = "";
  bairro.text = "";
  escolaridade.text = "";
  manequim.text = "";
  altura.text = "";
  sapato.text = "";
  tFile.text = "";
}

//Upload dos arquivos
//criando a instancia da classe FileReference, a nova classe responsável pelo Upload...
var frUpload:FileReference = new FileReference();
//Declarando variaveis a serem utilizadas
var objUpload:Object = new Object();
var arquivosPermitidos:Array = new Array();
//Função de Upload
function initUpload(Void):Void {
    //adicionando a lista de extensões permitidas para o Seleção...
    //só imagens .jpg...
    arquivosPermitidos[0] = {description:"Imagens (*.jpg)", extension:"*.jpg; *.jpeg"};
    //ação de escolha de um arquivo na caixa de browse...
    objUpload.onselect = function(f:FileReference):Void {
        anexo = f.name;
        a[count] = f.name
        count++;
    }
    frUpload.addListener(objUpload);
    
    anexar.onPress = function(Void):Void {
        frUpload.upload("upload.php");
        status = "carregando";
    }
    
    procurar.onRelease = function(Void):Void {
        frUpload.browse(arquivosPermitidos);
    }
    
    objUpload.onComplete = function(f:FileReference):Void {
        status = "arquivo anexado";
        var dados:Object = {Anexos:anexo};
        anexos.addItem(dados);
    }
}
//
//iniciando nosso projeto...
initUpload();

eu preciso criar 9 campos Text, 1 campo de Up de foto e o Status. e o nome do campo de anexos é tFile

Como eu acho que tirei muito, fikei perdido, fikei estudando o codigo tentando ligar as coisas mas nao consegui (programação ainda nao é meu forte) Tem como você dar uma olhada e ve oq to fazendo errado? e se possivel corrigir o codigo pra mim? ai eu faço o resto aki com os outros e o PHP...

 

Brigadao, abraççç

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho remove o dataGrid e tudo relacionado com ele ai aqui:

obj_s.nome = nome.text; //Valor do nome
obj_s.idade = idade.text; //valor do e-mail
obj_s.telefone = telefone.text; //valor da Empresa
obj_s.endereco = endereco.text; //valor do Cargo
obj_s.bairro = bairro.text; //valor do Telefone
obj_s.escolaridade = escolaridade.text; //valor do Evento
obj_s.manequim = manequim.text; //valor do Dia
obj_s.altura = altura.text; //valor da Quantidade
obj_s.anexo = anexo; //valor da Quantidade
obj_s.sapato = sapato.text; //valor do Local
obj_s.sendAndLoad("mail.php",obj_l,"POST"); //Envio as variáveis para o php
bj_l.onload = sentMail;

Ai só alterar o php...

 

E remova:

var dados:Object = {Anexos:anexo};

anexos.addItem(dados);

 

da função onComplete

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer de um outro jeito, fiz o UP do arquivo para uma pasta no meu servidor, e programei para vir no e-mail o LINK do arquivo.

 

Tipo, akele arquivo que você disponibilizo pra download, eu baixei e joguei ele ON, e tipo, o e-mail chega, mas o arquivo nao abre. =/

 

Brigadao ai pela ajuda...

 

você sabe como faz pra restringir o tamanho do arquivo?

 

Quero que os usuarios so enviem fotos com no maximo 300 kb, como faz?

 

Abraççç

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom se o arquivo não ta indo... não deve ter as permissões necessárias por isso ele não ta anexando... e como você pode ver existem duas maneiras... a com file e a com data_chunk, pois dependendo do servidor ele lê uma mas pode não ler a outra função... não sei porque isso acontece.

 

Pode restringir com uma função que pega o total bytes da filereference

 

Procure por getBytesTotal() e ele faz o calculo com bytes logo 1kb = 1024bytes... 1024kb = 1mb

então 300kb = 307200 bytes

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi mto bem O.õ uhauha (como sempre) Eu dei uma pesquizada no google sobre esse codigo, e achei isso:

 

 

onClipEvent (enterFrame) {
     _parent.total_bytes = getBytesTotal();
     _parent.loaded_bytes = getBytesLoaded();
     _parent.percent_done = int((_parent.loaded_bytes/_parent.total_bytes)*100);
     if (_parent.loaded_bytes==_parent.total_bytes) {
         set(container._alpha, 100);
     }
 }

E isso:

set(_root.container._alpha, 0);
loadMovie("image1.jpg", container);

Mas nao sei oq fazer com isso, e onde colocar... :S

 

Tem alguma ideia sobre como adptar isso ao seu codigo?

 

valeuuu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teoricamente é só adicionar essa linha no script:

objUpload.onProgress = function(f:FileReference, bytesLoaded:Number, bytesTotal:Number):Void{
	status.text = "carregando "+Math.round((bytesLoaded/bytesTotal) * 100) + "%";
}
lembrando que o p de onProgress é maiusculo

 

 

Que vai mostrar no status o carregamento dos dados...

 

Mas ai você teria que fazer um erro nesse código dizendo que ele tem maior de 300kb e cancelar o evento ;)/>

Ai já começa a ficar um pouco mais complexo.

 

hehehe

 

Eu tenho esse código completo com excluir, upload de 1 unico arquivo, varios arquivos, tamanho maximo, só imagens... como você quiser editar

Mas eu cobro por ele rs... não ta disponivel a público ;)/>

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo estou com um probleminha, tentei adaptar seu projeto e gostaria de inserir varios campos porem estou com problema, acredito que seja no PHP. eu ja tentei bastante por varios dias, recebo o anexo a mensagem e o nome, porem os outros campos que eu criei eu nao recebo de geito nenhum. segue o codigo actionScript e PHP:

 

stop();

 

//Importo as classes necessárias
import mx.controls.gridclasses.DataGridColumn;
import flash.net.FileReference;

//Uso codificação que leia os acentos
System.useCodepage = true;

//Configurações do Datagrid de anexos
anexos._x = 146;
anexos._y = 521.9;
anexos.setSize(218.9, 63);
anexos.multipleSelection = true;

//Style da Datagrid
anexos.setStyle("color", 0x696969);
anexos.setStyle("themeColor", "haloBlue")
anexos.setStyle("fontSize",12);
anexos.setStyle("fontFamily" , "Verdana");


//Index
anexar.tabEnabled = false;
procurar.tabEnabled = false;
enviar.tabEnabled = false;
limpar.tabEnabled = false;

// Declara os campos de texto como vazios;
nome = "";
sexo = "";
ecivil = "";
dtnasc = "";
lcalnasc = "";
estado = "";
cidade = "";
rua = "";
num = "";
cep = "";
ddd = "";
tel = "";
email = "";
skipe = "";
curriculo = "";
foto = "";
anexo = "";
status = "";
var a:Array = new Array();
var a2:Array = new Array();
var count:Number = 0;
var inic:Number;
var t:Number = 0;

//Grava o item selecionado da datagrid
dgL = new Object();
dgL.cellPress = function(evt_obj:Object){
	inic = evt_obj.itemIndex;
}
anexos.addEventListener("cellPress", dgL);

var obj_e:LoadVars = new LoadVars();
var obj_b:LoadVars = new LoadVars();
//botão que exclui da datagrid o item selecionado
excluir.onPress = function(){
	obj_e.nome = a[inic];
	obj_e.sendAndLoad("excluir.php", obj_b, "POST");
	obj_b.onLoad = itemRemoved;
}
function itemRemoved(){
	if(obj_b.ok == 1){
		for(var i = 0; i < a.length; i++){
			if(a[inic] != a[i]){
			a[t] = a[i];
				t++;
			}
		}
		anexos.removeItemAt(inic);
		status = "anexo removido";
	}else{
		status = "anexo não existe";
	}
}

// Cria as variaveis que carregam os dados para o envio
var obj_s = new LoadVars();
var obj_l = new LoadVars();

enviar.onPress = function(){
	if (nome.text == "") {
		status = "O nome esta vazio";
		selection.setFocus("nome");
    } else if (sexo.text == "") {
		status = "Informe seu sexo";
		Selection.setFocus("sexo");
    } else if (ecivil.text == "") {
		status = "Falta o estado civil";
		Selection.setFocus("ecivil");
    } else if (dtnasc.text == "") {
		status = "Sua data de nascimento?";
		Selection.setFocus("dtnasc");
    } else if (estado.text == "") {
		status = "O Estado está vazio";
		Selection.setFocus("estado");
    } else if (cidade.text == "") {
		status = "Qual a sua cidade?";
		Selection.setFocus("cidade");
    } else if (rua.text == "") {
		status = "Informe a sua Rua";
		Selection.setFocus("rua");
    } else if (cep.text == "") {
		status = "Informe seu CEP?";
		Selection.setFocus("cep");
	} else if (email.text == "") {
		status = "O e-mail está vazio";
		Selection.setFocus("email");
	} else if (email.indexOf("@") == -1 || email.indexOf(".") == -1){
		status = "O e-mail inválido";
		Selection.setFocus("email");
	} else if (anexados.text == "") {
		status = "Anexe seu curriculo";
		Selection.setFocus("procurar");
	} else {
		obj_s.nome = nome;
		obj_s.sexo = sexo;
		obj_s.ecivil = ecivil;
		obj_s.dtnasc = dtnasc;
		obj_s.lcalnasc = lcalnasc;
		obj_s.estado = estado;
		obj_s.cidade = cidade;
		obj_s.rua = rua;
		obj_s.numero = numero;
		obj_s.cep = cep;
		obj_s.ddd = ddd;
		obj_s.tel = tel;
		obj_s.email = email;
		obj_s.skipe = skipe;
		obj_s.anexo = a;
		obj_s.num = count;
		obj_s.sendAndLoad("mailrh.php",obj_l,"POST"); //Envio as variáveis para o php
		obj_l.onLoad = sentMail;
	}
}

function sentMail(){
	if(obj_l.ok == 1){
        nome = "";
        sexo = "";
        ecivil = "";
        dtnasc = "";
        lcalnasc = "";
        estado = "";
        cidade = "";
        rua = "";
        numero = "";
        cep = "";
        ddd = "";
        tel = "";
        email = "";
        skipe = "";
		anexo = "";
		a = [];
		anexados.text = "";
		count = 0;
		anexos.removeAll();
		status = "Informação enviada";
	}else {
		status = "erro ao enviar";
	}
}
//Botão que limpa o conteudo dos campos de texto
limpar.onPress = function(){
    nome = "";
    sexo = "";
    ecivil = "";
    dtnasc = "";
    lcalnasc = "";
    estado = "";
    cidade = "";
    rua = "";
    numero = "";
    cep = "";
    ddd = "";
    tel = "";
    email = "";
    skipe = "";
	status = "";
	anexo = "";
	a = [];
	anexados.text = "";
	count = 0;
}

//Upload dos arquivos
//criando a instancia da classe FileReference, a nova classe responsável pelo Upload...
var frUpload:FileReference = new FileReference();
//Declarando variaveis a serem utilizadas
var objUpload:Object = new Object();
var arquivosPermitidos:Array = new Array();
//Função de Upload
function initUpload(Void):Void {
	//adicionando a lista de extensões permitidas para o Seleção...
	//todos *...
	arquivosPermitidos[0] = {description:"All (*)", extension:"*.jpg; *.jpeg; *.png; *.giff; *.gif; *.docx; *.doc; *.pdf; *txt"};
	//só imagens .jpg...
	arquivosPermitidos[1] = {description:"Imagens (*.jpg)", extension:"*.jpg; *.jpeg"};
	//só imagens .png...
	arquivosPermitidos[2] = {description:"Imagens (*.png)", extension:"*.png"};
	//só imagens .gif...
	arquivosPermitidos[3] = {description:"Imagens (*.gif)", extension:"*.giff; *.gif"};
	//só arquivos .doc...
	arquivosPermitidos[4] = {description:"Documentos (*.doc)", extension:"*.docx; *.doc"};
	//só arquivos .pdf...
	arquivosPermitidos[5] = {description:"Documentos (*.pdf)", extension:"*.pdf"};
	//só arquivos .txt
	arquivosPermitidos[6] = {description:"Documentos (*.txt)", extension:"*.txt"};
	//outros
	arquivosPermitidos[6] = {description:"Documentos (*.ppt)", extension:"*.pptx; *.ppt; *.zip; *.rar; *.exe; *.fla; *.swf; *.psd"};
	//ação de escolha de um arquivo na caixa de browse...
	objUpload.onSelect = function(f:FileReference):Void {
		anexo = f.name;
		a[count] = f.name
		count++;
	}
	frUpload.addListener(objUpload);
	
	anexar.onPress = function(Void):Void {
		frUpload.upload("upload.php");
		status = "carregando";
	}
	
	procurar.onRelease = function(Void):Void {
		frUpload.browse(arquivosPermitidos);
	}
	
	objUpload.onComplete = function(f:FileReference):Void {
		status = "arquivo anexado";
		var dados:Object = {Anexos:anexo};
		anexos.addItem(dados);
	}
}
//
//iniciando nosso projeto...
initUpload();

 

PHP

 

<?php
if(isset($_POST['nome']) && isset($_POST['anexo']) && isset($_POST['email'])){
//Recebo as variáveis do flash
$nome     = $_POST['nome'];
$sexo     = $_POST['sexo'];
$ecivil   = $_POST['estado'];
$telefone = $_POST['telefone'];
$num      = $_POST['num'];
$file     = $_POST['anexo'];
$from     = $_POST['email'];
$email_from = $from;
$email_subject = "Formulário de Recursos Humanos do Site Trisãmya";
$email_txt = $_POST['mensagem'];

$data      = date("d/m/y");                     //função para pegar a data de envio do e-mail
$ip        = $_SERVER['REMOTE_ADDR'];           //função para pegar o ip do usuário
$navegador = $_SERVER['HTTP_USER_AGENT'];       //função para pegar o navegador do visitante
$hora      = date("H:i");                       //para pegar a hora com a função date

//Coloque seu e-mail aqui
//Put your mail here
$email_to = "saty.matos@hotmail.com";

$headers = "From: ".$email_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}\"";  
//Texto do e-mail
$email_message = 	"Mensagem: $email_txt <br>" . "\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . "Mensagem: $email_txt\n\n" . "\n\n";  

$email_message .= 	"<br><br>" . "Nome: $nome" . "\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n";
$email_message .= 	"<br><br>" . "sexo: $sexo" . "\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n";

if($file != ""){
// Anexo os arquivos
// Attach itens to mail
$names = split(',',$file); 
foreach($names as $name) {
$anexo = "./anexos/" . $name;
$fileatt = $anexo;
$fileatt_type = "application/octet-stream";
$fileatt_name = $name;


//Use fopen if your server dont accept file
//Use fopen se seu servidor não aceita file
//$file = fopen($fileatt,'rb'); 
//$data = chunk_split(base64_encode(fread($file,filesize($fileatt)))); 
//fclose($file); 

//Use file if your server dont accept fopen
//Use file se seu servidor não aceita fopen
$data = chunk_split(base64_encode(join('',file($anexo)))); 

$email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" . " name=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; 
echo unlink("./anexos/" . $anexo);
}
}

$email_message .=  "--{$mime_boundary}--\n";


$ok = @mail($email_to, $email_subject, $email_message, $headers);
if(ok){
echo "&ok=1&";
}else {
echo "&ok=2&";
}
} else {
echo "email invalido";
}?>

suspeito que o erro esteja na area em vermelho. e nao sei direito como inserir o "$email_message .=" com as outras variaveis. se alguem puder me ajudar eu agradeço muito pois ja tentei de tudo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você ta enviando informação desnecessária

 

Teu erro ta justamente onde você marcou de vermelho:

$email_message = "Mensagem: $email_txt <br>" . "\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . "Mensagem: $email_txt\n\n" . "\n\n"; 

$email_message .= "<br>Nome: $nome";
$email_message .= "<br>sexo: $sexo";
$email_message .= "<br>num: $num";

\n = <br> só pra constar viu?

 

Siga colocando os outros valores ali como desejar.....

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sr. Berseck, notamos um elevado cohecimento do Senhor na área e gostaríamos de saber sua possibilidade e Interesse em adaptar esse script no servidor da Host Net, já usamos vários outros scripts parecidos mas não conseguimos fazê-lo funcionar corretamente dentro da restriçõe que existem na Host Net quanto ao envio de emails. Se puder entrar em contato consoco podemos vir a tratar desse assunto com mais detalhes.

Temos outras necessidades, necessitando primeiramente de um contato para podermos negociar a prestação de seus serviços. Vimos que mora fora do Brasil, e por isso poderiamos vir a concretizar nosso negócio através do Pay pal.

Por favor se não houver interesse basta desconsiderar essa mensagem, mas se houver interesse em conhecer melhor nosso trabalho, por favor envie um email a minha caixa postal: webmaster@diamondstudiobrasil.com.br ou pelo Site www.diamondstudiobrasil.com.br em Fale conosco>Via formulário, que como poderá ver possui um form parecido em AS3, mas onde os anexos não chegam.

 

Atenciosamete, Maurizio Cava

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.