En XAMPP, en local, funciona perfecto, pero en servidor linux me manda el correo sin el archivo adjunto y me pone en el cuerpo del mensaje lo siguiente:
Content-Type: multipart/mixed; boundary="==Multipart_Boundary_x15b1727bbcb011ddcc e0dd02842b3068x"
This is a multi-part message in MIME format.
--==Multipart_Boundary_x15b1727bbcb011ddcce0dd02842b 3068x
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
Revise los 1 archivos adjuntos
--==Multipart_Boundary_x15b1727bbcb011ddcce0dd02842b 3068x
Content-Type:application/pdf; name="Listado.pdf"
Content-Disposition: attachment; filename="Listado.pdf"
Content-Transfer-Encoding: base64
JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbn QgMSAwIFIKL1Jlc291cmNlcyAy
IDAgUgovQ29udGVudHMgNCAwIFI+PgplbmRvYmoKNCAwIG9iag o8PC9GaWx0ZXIgL0ZsYXRlRGVj
b2RlIC9MZW5ndGggNjQ4Pj4Kc3RyZWFtCnicnZRNbhNBEIX3OU UtEylUuvq/2dmOIxlsOcSTIKRs
BmcAIzsmEyIkVpyHNRdBnIAjcANqfhz3eOLEikaaRU/X97pevR4Jr/YEGgff9roJHJ0QBBQCkg/Q
T/ZuQEqLzoHgJwSUBNKjMuCkKHZNF3A0IDhewptVNel1OS8pb4oq x8VaQnIF+53zZDz6czEY9icw
PH/X65z9mhxA8rku2DgBr2hJ6CQ4Tyh8iRj9hKtsDr00X2TXMMry6 ae/13Axm8/TxTKHiKa1Q8PH
tYRSlbW9o9M0v7nLmADzFDr54u5fegjSNMoUW6LAaUIVy
--==Multipart_Boundary_x15b1727bbcb011ddcce0dd02842b 3068x
A continuación pongo el código:
Código PHP:
// Definir el juego de caracteres a utilizar en el mensaje
define("_CHARSET", "ISO-8859-1");
// Definir extensión de los archivos a enviar
define("_EXT", "pdf");
// Definir directorio base
define("_DIR", "./");
// Definir mime de los archivos a enviar
define("_MIME", "application/pdf");
// Destinatario del mensaje
$destino = "[email protected]";
// Asunto del mensaje
$asunto = utf8_decode("Listado");
// Generar identificador para el email
$mime_boundary = "==Multipart_Boundary_x".md5(uniqid(time()))."x";
// Cabecera del email
$cabecera = utf8_decode("From: <[email protected]>\r\n"
. "Reply-To: <[email protected]>\r\n"
. "Return-Path: <[email protected]>\r\n"
. "Message-ID: <".time()."[email protected]>\r\n"
. "X-Mailer: PHP v".phpversion()."\r\n"
. "MIME-Version: 1.0\r\n\r\n"
. "Content-Type: multipart/mixed; boundary=\"{$mime_boundary}\"\r\n");
// Incluir adjuntos
$adjuntos = ""; $i = $f = 0;
$archivos = scandir(_DIR);
$total = count($archivos);
foreach ($archivos as $archivo)
{
if (substr($archivo, -3, 3) == _EXT)
{
// Codificar el archivo en Base64
$datos = chunk_split(base64_encode(file_get_contents(_DIR . $archivo)));
// Comprobar si es el último archivo a adjuntar para cerrar el bloque
$end = "";
if ($total == $i - 1) $end = "--";
// Agregar el adjunto al mensaje
$adjuntos .= "Content-Type:"._MIME."; name=\"{$archivo}\"\r\n"
. "Content-Disposition: attachment; filename=\"{$archivo}\"\r\n"
. "Content-Transfer-Encoding: base64\r\n\r\n"
. "{$datos}\r\n\r\n"
. "--{$mime_boundary}$end\r\n";
$f ++;
}
$i ++;
}
// Cuerpo del mensaje
$mensaje = "This is a multi-part message in MIME format.\r\n\r\n"
. "--{$mime_boundary}\r\n"
. "Content-Type: text/plain; charset=\""._CHARSET."\"\r\n"
. "Content-Transfer-Encoding: 8bit\r\n\r\n"
// Este es el mensaje que verá el receptor. Puede ser texto como el ejemplo o HTML, cambiando el mime (Content-Type) por text/html
. utf8_decode("Revise los $f archivos adjuntos\n\\r\n\r\n")
. "--{$mime_boundary}\r\n"
. $adjuntos;
mail($mail[$i], $asunto, $mensaje, $cabecera);