Comunidad de diseño web y desarrollo en internet online

ayuda con un formulario y archivo adjunto

Citar            
MensajeEscrito el 07 Oct 2008 06:46 pm
Buenas,

Tengo un problema con un formulario y no se si hice bien al postearlo aca. Mi problema es el siguiente resulta que yo hice un formulario en html el cual llena una informacion y adjunta un o dos archivos archivos, el problema esta en que yo cuando coloco mi email de hotmail para recibir toda la informacion y el (los) archivo(s) adjunto(s) solo me manda la direccion de donde tomo ese archivo (C:\\Documents and Settings\\Administrator\\My Documents\\img_fondo.jpg), como hago para que me envie el archivo adjunto??.

Les envio el html:

Código :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>


<form enctype="multipart/form-data" name="doit" action="env_attach.php" method="post"> 
<table cellpadding=0 cellspacing=0 width="295"><tr> 
<td width="295" height="26"> <font face="Arial, Helvetica, sans-serif" size="2"><b>Tu 
nombre:<br> 
</b></font> 
<input type="text" name="name" size=30><br> 
&nbsp;</td> 
</tr> 
<tr> 
<td width="295"> <font face="Arial, Helvetica, sans-serif" size="2"><b>Tu 
e-mail:<br> 
</b></font> 
<input type="text" name="from" size=30><br> 
&nbsp;</td> 
</tr> 
<tr> 
<td width="295"> <font face="Arial, Helvetica, sans-serif" size="2"><b>Archivo:<br> 
</b></font> 
<input type=file name="attach" size=30><br> 
&nbsp;</td> 
</tr> 
<td width="295"> 
<tr> 
<td width="295" height="23"><font face="Arial, Helvetica, sans-serif" size="2"><b>Asunto:<br> 
</b></font> 
<input type="text" name="subject" size=30> <br> 
&nbsp;</td> 
</tr></table> 
<p align="left"> 
<font face="Arial, Helvetica, sans-serif" size="2"><b>Mensaje:</b></font><br> 
<textarea name="body" rows=10 cols=35 wrap="message"></textarea><br><br> 
<input type="submit" name="sendmail" value="enviar"> </p> 
</form> 


</body>
</html>


y el php:

Código :


<?php 
        
    function form_mail($sPara, $sAsunto, $sTexto, $sDe){ 
         
        $bHayFicheros = 0; 
        $sCabeceraTexto = ""; 
        $sAdjuntos = ""; 
         
        if ($sDe)$sCabeceras = "From:".$sDe."\n"; else $sCabeceras = ""; 
        $sCabeceras .= "MIME-version: 1.0\n"; 

        foreach ($_POST as $sNombre => $sValor) 
             $sTexto = $sTexto."\n".$sNombre." = ".$sValor; 
         
        foreach ($_FILES as $vAdjunto){ 
              
             if ($bHayFicheros == 0){ 
              
                 $bHayFicheros = 1; 
                  
                 $sCabeceras .= "Content-type: multipart/mixed;"; 
                    $sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n"; 
                     
                    $sCabeceraTexto = "----_Separador-de-mensajes_--\n"; 
                    $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n"; 
                    $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n"; 
                     
                    $sTexto = $sCabeceraTexto.$sTexto; 

             } 
              
             if ($vAdjunto["size"] > 0){ 
                                   
                 $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n"; 
                 $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";; 
                    $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n"; 
                    $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";                  
                  
                 $oFichero = fopen($vAdjunto["tmp_name"], 'r'); 
                    $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"])); 
                    $sAdjuntos .= chunk_split(base64_encode($sContenido)); 
                    fclose($oFichero); 
             } 
              
        } 
         
        if ($bHayFicheros) 
            $sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n"; 
     
        return(mail($sPara, $sAsunto, $sTexto, $sCabeceras)); 
    } 
     
    //Ejemplo de como usar: 
    if (form_mail("[email protected]", 
                 "Envio de Formulario", 
                 "Los datos introducidos en el formulario son:\n\n", $HTTP_POST_VARS[email]
                 
                 ) 
        ) 
        echo "Su formulario ha sido enviado con exito"; 

?>



Gracias de antemano.

Por ErDeLo

24 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 07 Oct 2008 08:14 pm
Veni compañer no te partas la madre con ese metodo....

usa PHPMailer es mucho mejor en todo sentido

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 07 Oct 2008 10:25 pm
Gracias por el aporte jpcw, lo voy a tener en cuenta de ahora en adelante. Con respecto a mi problema ya logre solucionarlo.

Debajo de
$sCabeceras .= "MIME-version: 1.0\n";

tenia que colocar
$sCabeceras .= "From: $sDe <$sDe>\n";
$sCabeceras .= "Return-Path: $sPara <$sPara>\n";

Para que me pueda enviar a un correo de hotmail.

Por ErDeLo

24 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 07 Oct 2008 11:18 pm
tienes q codificar el archivo leeido en base 64 para poder pasarlo al destino llamado mail para mayor info pasate por mi web q esta en la firma hay un completo articulo para mandar adjuntos con php via mail

Por talcual

686 de clabLevel



 

Colombia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.