Hola ehgaucho.
Los headers que he puesto, son los que estoy utilizando. igual te los pongo tal cual los tengo:
significado de las variables:
$filename = nombre de archivo
$path = ruta de archivo
$mailto = Correo de receptor
$from_mail = Email del emisor
$from_name = Nombre del emisor
$subject = Titulo del mensaje
$message = Cuerpo de mensaje
Código PHP:
$file = $path.$filename;
$content = chunk_split(base64_encode(file_get_contents($file)));
$uid= md5(uniqid(time()));
$bound="--".$uid."\r\n";
$last_bound="--".$uid."--\r\n";
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "MIME-Version: 1.0"."\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= $bound;
$header .= "Content-type:text/plain; charset=utf-8\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n";
$cuerpo .= $message."\r\n";
$cuerpo .= $bound;
$cuerpo .= "Content-Type: application/zip; name=\"".$file."\"\r\n";
$cuerpo .= "Content-Transfer-Encoding: base64\r\n";
$cuerpo .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n";
$cuerpo .= $content."\r\n";
$cuerpo .= $last_bound;
if (mail($mailto, $subject, $cuerpo, $header)) {
echo "Correo enviado a ".$mailto;
} else {
echo "Error al enviar correo";
}
Lo que se me hace raro es lo siguiente:
Cuando lo envío a un correo gmail, el archivo zip me lo muestra con los archivos dentro.
Cuando lo envío a un correo hotmail, el archivo zip esta vacío.
Cuando lo envío a un correo privado, el correo me llega con una cadena inmensa de texto, pero no el archivo adjunto.
Saludos.