Jump to content


Photo

Formail Com 4 Anexos, Mas Só Quero 1


  • Faça o login para participar
2 replies to this topic

#1 Kahor

Kahor

    12 Horas

  • Usuários
  • 230 posts
  • Sexo:Masculino

Posted 25/03/2010, 19:31

Olha eu de novo aqui :)

Consegui mandar por e-mail o anexo (aueba!)

Só tem 2 poréns!

O script que estou usando é para mandar 4 anexos, que no final chega apenas 1 ao e-mail. Eu tirei a parte dos 3 anexo no php e html para enviar apenas 1, mas o php me informa que nao existe anexo para enviar =T

E depois de enviado, chega ao meu e-mail sem imagem, apenas com o X vermelho, e quando pelo a URL da imagem e colo no navegador eu baixo a imagem que anexei, mas por que ocorre isso?

Segue codigos

<form action="envia.php" method="post" enctype="multipart/form-data" name="email" id="email" onsubmit="return checa_formulario(this)">

<div align="left">Nome:<input name="nome" id="nome" size="25" type="text" /></div>
<div align="left">Email:<input name="email_from" id="email_from" size="25" type="text" /></div>
<div align="left">
<p><input name="arquivo" id="arquivo" size="40" type="file" />
<input name="arquivo" id="arquivo" size="40" type="file" />
<input name="arquivo" id="arquivo" size="40" type="file" />
<input name="arquivo" id="arquivo" size="40" type="file" /></p></div>

<div align="left">
<p><textarea name="mensagem" cols="45" rows="5" id="mensagem"></textarea></p></div>
<input name="enviar" id="enviar" value="Enviar" type="submit" /><input name="apagar" id="apagar" value="Apagar" type="reset" />
</form> 

<?
 	//pega os dados enviados pelo usuário
 	$nome    	= $_POST["nome"];
 	$body    	= "Nome: $nome<br>
 	Descrição: $mensagem";
 	$to    	= "[email="visual@visualsinalizacao.net"]visual@visualsinalizacao.net[/email]"; //Coloque aqui o seu email
 	$from	= $_POST["email_from"];
 	$subject  = "teste de envio"; //Coloque aqui o assunto da mensagem enviada para o seu email
 	
  $attach  = $_FILES["arquivo"]["tmp_name"];
 	$attach_name  = $_FILES["arquivo"]["name"];
 	$attach_size  = $_FILES["arquivo"]["size"];
 	$attach_type  = $_FILES["arquivo"]["type"];
  
  $attach1  = $_FILES["arquivo"]["tmp_name"];
 	$attach_name1  = $_FILES["arquivo"]["name"];
 	$attach_size1  = $_FILES["arquivo"]["size"];
 	$attach_type1  = $_FILES["arquivo"]["type"];
  
  $attach2  = $_FILES["arquivo"]["tmp_name"];
 	$attach_name2  = $_FILES["arquivo"]["name"];
 	$attach_size2  = $_FILES["arquivo"]["size"];
 	$attach_type2  = $_FILES["arquivo"]["type"];
  
  $attach3  = $_FILES["arquivo"]["tmp_name"];
 	$attach_name3  = $_FILES["arquivo"]["name"];
 	$attach_size3  = $_FILES["arquivo"]["size"];
 	$attach_type3  = $_FILES["arquivo"]["type"];
 	
     	
 	//verifica se o email do remetente é válido
 	if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $from)){
	
 	echo "<center>Erro: Digite um e-mail válido</center>";
 	exit;
	
 	}
	
 	//define os headers de envio
 	$mailheaders = "From: \"$nome\" <$from>\r\n";
 	$mailheaders .= "Reply-To: $from\n";
 	//e define a mensagem tirando barras para evitar problemas no script
 	$msg_body = stripslashes($body);
	
	
 	//verifica se tem arquivo anexo, o if é se tiver e o else se não tiver anexo
 	if ($attach !=null)
 	{
 	//abre o arquivo para codificá-lo no formato de email
 	$file = fopen($attach, "r");
 	$contents = fread($file, $attach_size);
 	$encoded_attach = chunk_split(base64_encode($contents));
 	fclose($file);
 	//define os headers do anexo e da mensagem
 	$mailheaders .= "MIME-version: 1.0\n";
 	$mailheaders .= "Content-type: multipart/mixed; ";
 	$mailheaders .= "boundary=\"Message-Boundary\"\n";
 	$mailheaders .= "Content-transfer-encoding: 7BIT\n";
 	$mailheaders .= "X-attachments: $attach_name";
	
 	$body_top = "--Message-Boundary\n";
 	$body_top .= "Content-type: text/plain; charset=US-ASCII\n";
 	$body_top .= "Content-transfer-encoding: 7BIT\n";
 	$body_top .= "Content-description: Mail message body\n\n";
	
 	$msg_body = $body_top . $msg_body;
	
 	$msg_body .= "\n\n--Message-Boundary\n";
 	$msg_body .= "Content-type: $attach_type; name=\"$attach_name\"\n";
 	$msg_body .= "Content-Transfer-Encoding: BASE64\n";
 	$msg_body .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
 	$msg_body .= "$encoded_attach\n";
 	$msg_body .= "--Message-Boundary--\n";
 	//envia o email para as variáveis já definidas e tratadas e mostra mensagem de sucesso
 	mail($to, stripslashes($subject), $msg_body, $mailheaders);
 	echo"<center>Enviado com Sucesso!</center>";
 	}
 	else{
 	//se não tiver anexo ele envia só a mensagem com esses headers
 	echo "<center>Erro: Envio de ficheiro obrigatório!!!</center>";
 	exit;
 	$headers  = "MIME-Version: 1.0\r\n";
 	$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
 	$headers .= "From: \"$nome\" <$from>\r\n";
	
 	mail($to, stripslashes($subject), $msg_body, $mailheaders);
 	echo"<center>Enviado com Sucesso!</center>";
 	}
 	?>



Alguém?

#2 digo

digo

    24 Horas

  • Usuários
  • 435 posts
  • Sexo:Masculino

Posted 25/03/2010, 21:16

Fala Kahor,

Não vi erro no seu código para estar dando essa mensagem de nenhum arquivo sendo enviado, só fiz algumas mudanças simples

<form action="envia.php" method="post" name="form_email" id="form_email" enctype="multipart/form-data" onsubmit="return checa_formulario(this)">

<div align="left">Nome:<input name="nome" id="nome" size="25" type="text" /></div>
<div align="left">Email:<input name="email_from" id="email_from" size="25" type="text" /></div>
<div align="left">
<p>
<input name="arquivo" id="arquivo" size="40" type="file" />
</p>
</div>

<div align="left">
<p><textarea name="mensagem" cols="45" rows="5" id="mensagem"></textarea></p></div>
<input name="enviar" id="enviar" value="Enviar" type="submit" /><input name="apagar" id="apagar" value="Apagar" type="reset" />
</form> 

<?
        //pega os dados enviados pelo usuário
        $nome           = $_POST["nome"];
        $body           = "Nome: $nome<br>
        Descrição: $mensagem";
        $to     = "[email="visual@visualsinalizacao.net"]visual@visualsinalizacao.net[/
email]"; //Coloque aqui o seu email
        $from   = $_POST["email_from"];
        $subject  = "teste de envio"; //Coloque aqui o assunto da mensagem enviada para o seu email
        
  		$attach  	  = $_FILES["arquivo"]["tmp_name"];
        $attach_name  = $_FILES["arquivo"]["name"];
        $attach_size  = $_FILES["arquivo"]["size"];
        $attach_type  = $_FILES["arquivo"]["type"];

        
        //verifica se o email do remetente é válido
        if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([
0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([
0-9,a-z,A-Z])?$", $from)){
        
        echo "<center>Erro: Digite um e-mail válido</center>";
        exit;
        
        }
        
        //define os headers de envio
        $mailheaders = "From: \"$nome\" <$from>\r\n";
        $mailheaders .= "Reply-To: $from\n";
        //e define a mensagem tirando barras para evitar problemas no script
        $msg_body = stripslashes($body);
        
        
        //verifica se tem arquivo anexo, o if é se tiver e o else se não tiver anexo
        if ($attach != "")
        {
        //abre o arquivo para codificá-lo no formato de email
        $file = fopen($attach, "r");
        $contents = fread($file, $attach_size);
        $encoded_attach = chunk_split(base64_encode($contents));
        fclose($file);
        //define os headers do anexo e da mensagem
        $mailheaders .= "MIME-version: 1.0\n";
        $mailheaders .= "Content-type: multipart/mixed; ";
        $mailheaders .= "boundary=\"Message-Boundary\"\n";
        $mailheaders .= "Content-transfer-encoding: 7BIT\n";
        $mailheaders .= "X-attachments: $attach_name";
        
        $body_top = "--Message-Boundary\n";
        $body_top .= "Content-type: text/plain; charset=US-ASCII\n";
        $body_top .= "Content-transfer-encoding: 7BIT\n";
        $body_top .= "Content-description: Mail message body\n\n";
        
        $msg_body = $body_top . $msg_body;
        
        $msg_body .= "\n\n--Message-Boundary\n";
        $msg_body .= "Content-type: $attach_type; name=\"$attach_name\"\n";
        $msg_body .= "Content-Transfer-Encoding: BASE64\n";
        $msg_body .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
        $msg_body .= "$encoded_attach\n";
        $msg_body .= "--Message-Boundary--\n";
        //envia o email para as variáveis já definidas e tratadas e mostra mensagem de sucesso
        mail($to, stripslashes($subject), $msg_body, $mailheaders);
        echo"<center>Enviado com Sucesso!</center>";
        }
        else{
        //se não tiver anexo ele envia só a mensagem com esses headers
        echo "<center>Erro: Envio de ficheiro obrigatório!!!</center>";
        exit;
        $headers  = "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
        $headers .= "From: \"$nome\" <$from>\r\n";
        
        mail($to, stripslashes($subject), $msg_body, $mailheaders);
        echo"<center>Enviado com Sucesso!</center>";
        }
        ?>

Abraços

#3 Kahor

Kahor

    12 Horas

  • Usuários
  • 230 posts
  • Sexo:Masculino

Posted 26/03/2010, 07:58

Amigo, deu certo! Ele envia apenas 1 anexo sem erro agora :)

Voce mudou essa linha

if [color="#666600"]([/color]$attach != "")

O que ela quer dizer?





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq