Ver Mensaje Individual
  #14 (permalink)  
Antiguo 29/01/2009, 14:42
KingColt
 
Fecha de Ingreso: febrero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Archivo adjunto en envio de mensaje con php - urgente!

gracias tio funciona bien dejo el codigo por si a alguien le sirve
Código PHP:
<html>
<
body>
<
form action="1.php" method="POST" enctype="multipart/form-data">
   
Destinatario<br>
   <
input type="text" name="destino" size="30" maxlength="30" value=""><BR>
   
Título:<BR>
   <
input type="text" name="titulo" size="20" maxlength="30"><BR>
   
Contenido del mensaje:<BR>
   <
input type="text" name="contenido" size="20" maxlength="30"><BR>
   
Adjunto:<br
   <
input type="file" name="miarchivo"><BR>
   <
INPUT type="submit" VALUE="Enviar">
</
form
</
body>
</
html
Código PHP:
<?
//Recuperamos los datos del form
$correo $_POST['destino'];
$asunto $_POST['titulo'];
$mensaje $_POST['contenido'];
$nom_archivo $_FILES['miarchivo']['name'];   //nombre del archivo adjunto


$headers "From: [email protected]\n";
$headers .= "Reply-To: [email protected]\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"MIME_BOUNDRY\"\n";
$headers .= "Este es un mensaje multi-part en formato MIME.\n";

$fp fopen(($_FILES['miarchivo']['tmp_name']),"r");
$str fread($fpfilesize($_FILES['miarchivo']['tmp_name']));
$str chunk_split(base64_encode($str));
$fp fclose($fp);


$message "--MIME_BOUNDRY\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "\n";
$message .= "$mensaje";
$message .= "\n";

$message .= "--MIME_BOUNDRY\n";
$message .= "Content-Type: application/octet-stream; name=\"$nom_archivo\"\n";
$message .= "Content-disposition: attachment\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "\n";
$message .= "$str\n";
$message .= "\n";
$message .= "--MIME_BOUNDRY--\n";

mail($correo$asunto$message$headers);
echo 
$nom_archivo;
?>
Lo unico que falta es que cuando el campo tipo file del form este vacio no adjunte nada por que sale un error, pero igual se envia el mensaje.

Por otro lado sobre el Content-Type puedo adjuntar archivos .txt .zip .doc .jpg y seguro todos los demas no se a que se deba aqui esta la linea
Código PHP:
$message .= "Content-Type: application/octet-stream; name=\"$nom_archivo\"\n"
Supuestamente el application/octet-stream solo debe cargar archivos .txt

En fin ya tengo lo que necesitaba pero si alguien quiere explicar sobre eso estaria bueno o quizas yo estoy equivocado

saludos