Foros del Web » Programando para Internet » PHP »

Ayuda con envio de email con attachment, archivo truncado

Estas en el tema de Ayuda con envio de email con attachment, archivo truncado en el foro de PHP en Foros del Web. Hola a todos, buenas tardes Tengo un problema con un script, al intentar enviar un email con un archivo adjunto, si llega bien el correo ...
  #1 (permalink)  
Antiguo 01/07/2005, 17:22
 
Fecha de Ingreso: junio-2005
Mensajes: 5
Antigüedad: 18 años, 10 meses
Puntos: 0
Ayuda con envio de email con attachment, archivo truncado

Hola a todos, buenas tardes

Tengo un problema con un script, al intentar enviar un email con un archivo adjunto, si llega bien el correo y si llega con el archivo adjunto, el problema es que cuando intento verlo o descargarlo aparece truncado. Sin embargo cuando descargo el archivo que queda en el Servidor (para ver si acaso no se esta haciendo el 'upload' correctamente) éste si se puede abrir sin problemas.

Con el fin de monitorear el comportamiento del archivo adjunto en la bandeja de correo, puse 'inline' en lugar de 'attachment' en la parte de "Content-Disposition".

Como dato informativo, estoy haciendo el script en Dreamweaver - MacOSX (monitoreando que no haga caracteres basura), estoy usando un Servidor Virtual (AT&T hosting), la carpeta donde estoy poniendo el script y donde se estan alojando los archivos adjuntos tiene permisos 777. Ahh! lo olvidaba, el script no arroja ningun error a la hora de su ejecucion.

Si alguien puede ayudarme a ver que estoy omitiendo o poniendo mal en el codigo le agradecere muchisimo me lo haga saber.

De antemano muchas gracias!!!!
Javier




Este es el codigo del formulario HTML:

Código PHP:
<html>
<
head>
<
title>Envio de Email</title>
</
head>
<
body>
<
form action="mail.php" method="POST" enctype="multipart/form-data">
  <
table width="480" border="0" cellpadding="0" cellspacing="0" bgcolor="E3E3E3">
    <
tr
      <
td height="36" align="right"><font size="2" face="Arial, Helvetica, sans-serif">Email:</font></td>
      <
td width="380"><font size="2" face="Arial, Helvetica, sans-serif"
        <
input name="from" type="text" size="32" />
        </
font></td>
    </
tr>
    <
tr
      <
td align="right"><font size="2" face="Arial, Helvetica, sans-serif">Mensaje:</font></td>
      <
td width="380"><font size="2" face="Arial, Helvetica, sans-serif"
        <
textarea name="message" cols="32" rows="6"></textarea>
        </
font></td>
    </
tr>
    <
tr
      <
td height="36" align="right"><font size="2" face="Arial, Helvetica, sans-serif">Archivo</font></td>
      <
td width="380"><font size="2" face="Arial, Helvetica, sans-serif"
        <
input name="fileatt" type="file" size="22" />
        </
font></td>
    </
tr>
    <
tr
      <
td height="48" align="right"><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
      <
td width="380"><font size="2" face="Arial, Helvetica, sans-serif"
        <
input name="submit" type="submit" value="Enviar" />
        </
font></td>
    </
tr>
  </
table>
  </
form>
</
body>
</
html



Este es el codigo PHP:

Código PHP:
<html>
<head>
<title>Envio de Email con Attachments</title>
</head>
<body>
<?
// Variables de saltos de linea
$UN_SALTO="\r\n";
$DOS_SALTOS="\r\n\r\n";

// Variables de headers y contenido del email
$to="correo_destino@nombre_dominio.etc";
$from=$_POST['from'];
$subject="Attachments";
$message=$_POST['message'];

// Leer el tipo de archivo
$fileatt_type $_FILES['fileatt']['type'];
// Leer el tamano del archivo
$tamano $_FILES ['fileatt']['size'];
// Comprobar el tamano del archivo y hacer upload
if( $tamano 1024000 ){
    
move_uploaded_file($_FILES['fileatt']['tmp_name'],$_FILES['fileatt']['name']);
    
// Leer el nombre de archivo
    
$fileatt $_FILES['fileatt']['name'];
    echo 
$upload true;
}

// Comprobando si se subio el archivo se procede a componer el mensaje
if($upload){

    
// Se genera el separador
    
$separador "_separador_trozos_".md5 (uniqid (rand())); 
  
    
$headers "MIME-Version: 1.0".$UN_SALTO
    
$headers .= "From: $from".$UN_SALTO;
    
$headers .="X-Mailer: PHP/"phpversion().$UN_SALTO;
    
$headers .= "Content-Type: multipart/mixed;".$UN_SALTO
    
$headers .= " boundary = $separador".$DOS_SALTOS

    
// Parte primera -Mensaje en formato HTML 
        // Separador inicial
    
$texto ="--$separador".$UN_SALTO
        
// Encabezado parcial
    
$texto .="Content-Type: text/html; charset=\"ISO-8859-1\"".$UN_SALTO
    
$texto .="Content-Transfer-Encoding: Quoted-printable".$DOS_SALTOS
        
// Contenido de esta parte del mensaje
    
$texto .= $message;

        
// Separador de partes

    
$att $UN_SALTO."--$separador".$UN_SALTO

    
// Parte segunda -Archivo adjunto 

        // Encabezado parcial

    
$att .="Content-Type: {$fileatt_type} name=\"{$fileatt}\"".$UN_SALTO;  
    
$att .="Content-Disposition: inline; filename=\"{$fileatt}\"".$UN_SALTO;
    
$att .="Content-Transfer-Encoding: base64".$DOS_SALTOS

      
// lectura  del fichero adjunto si este subio correctamente
      
$file fopen ($fileatt"rb");
          
$data fread ($filefilesize ($fileatt));
      
fclose ($file);
    
    
// codificacion del fichero adjunto  
    
$att .= chunk_split(base64_encode($data)); 

    
// separador final del mensaje 
    
$att .= $UN_SALTO."--$separador--".$UN_SALTO

    
// Union de las diferentes partes para crear el cuerpo del mensaje
    
$message $texto.$att;

    
// envio del mensaje
    
if( @mail($to$subject$message$headers)){
        echo 
"<p>Mensaje enviado!</p>";
    } else {
        echo 
"<p>Error al enviar el mensaje!</p>";
    }
}
?>
</body>
</html>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:41.