Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/08/2003, 02:32
Avatar de jesusma
jesusma
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla (Spain)
Mensajes: 38
Antigüedad: 20 años, 10 meses
Puntos: 0
mail() no adjunta ficheros correctamente!

Buenas!

Mi Problema: La funcion que utilizo para enviar mails no envia los ficheros adjuntos correctamente.

Aqui les pongo el código utilizado:


//Variables que se pasan del formulario.
$subject = $_POST["subject"];
$mensaje = $_POST["mensaje"];
//Propiedades del archivo.
$archivo_name= $HTTP_POST_FILES['archivo']['name'];
$archivo_size= $HTTP_POST_FILES['archivo']['size'];
$archivo_type= $HTTP_POST_FILES['archivo']['type'];
$archivo= $HTTP_POST_FILES['archivo']['tmp_name'];
//$lim_tamano= $HTTP_POST_VARS['lim_tamano'];

//Composicion del mensaje.
$UN_SALTO="\r\n";
$DOS_SALTOS="\r\n\r\n";
//Separador de bloques.
$separador ="_separador".md5 (uniqid (rand()));


//Composicion de los destinatarios.
......
//Titulo del mensaje.
....
//Mensaje en texto Plano, viene del form.
....


//Cabeceras.
$cabecera ="Date: ".date("l j F Y, G:i").$UN_SALTO;
$cabecera .="MIME-Version: 1.0\n";
$cabecera .="From: ".$remitente."<".$remite.">\n";
$cabecera .="Return-path: ". $remite.$UN_SALTO;
$cabecera .="Reply-To: ".$responder.$UN_SALTO;
$cabecera .="X-Mailer: PHP/". phpversion().$UN_SALTO;

//Contenido para ficheros adjuntos.
$cabecera .= "Content-Type: multipart/mixed;".$UN_SALTO;
$cabecera .= " boundary=$separador".$DOS_SALTOS;
// Parte primera - Mensaje en formato PLANO (Si fuese HTTM bastaria con cambiar plain->html y el $mensaje que estuviera en HTML.
// Separador inicial
$texto ="--$separador".$UN_SALTO;
// Encabezado del texto plano.
$texto .="Content-Type: text/plain; charset=\"ISO-8859-1\"".$UN_SALTO;
$texto .="Content-Transfer-Encoding: 7bit".$DOS_SALTOS;
//Contenido de esta parte del mensaje
$texto .= $mensaje;

// Separador de partes

$adj1 = $UN_SALTO."--$separador".$UN_SALTO;

if ($archivo){
// Parte segunda - FICHEROS ADJUNTOS.

# Encabezado parcial

$adj1 .="Content-Type: ".$archivo_type ."; name=\"".$archivo_name."\"".$UN_SALTO;
$adj1 .="Content-Disposition: inline; filename=\"".$archivo_name."\"".$UN_SALTO;
$adj1 .="Content-Transfer-Encoding: base64".$DOS_SALTOS;

# lectura del fichero adjunto
$fp = fopen($archivo, "r");
$buff = fread($fp, filesize($archivo));
fclose($fp);
# codificación del fichero adjunto

$adj1 .=chunk_split(base64_encode($buff));


// separador final del mensaje
$adj2 .=$UN_SALTO."--$separador".$UN_SALTO;
}
// Unión de las diferentes partes para crear el cuerpo del mensaje
$mensaje=$texto.$adj1.adj2;
if( mail($destinatario, $titulo, $mensaje,$cabecera)){
echo "mensaje enviado";
}
else {
echo "mensaje NO enviado";
}


UFFFFFFFFFFFF!!!
Me pase, cortando y pegando.

Bueno, si tienen tiempo le echan una ojo y me comentan que puede estar erroneo.

Muchas gracias por vuestro tiempo y ayuda.

PD: Si alguien esta mas interesado en el tema que escriba un correo a mi direccion.

TA LUEGOOOOOOOOO
__________________
La mejor improvisación es la que se prepara.