Foros del Web » Programando para Internet » PHP »

Problema con mail() y adjunto

Estas en el tema de Problema con mail() y adjunto en el foro de PHP en Foros del Web. Buenas, estoy intentando enviar un correo con la función mail de php, el correo lleva un archivo adjunto. En XAMPP, en local, funciona perfecto, pero ...
  #1 (permalink)  
Antiguo 03/03/2013, 06:44
 
Fecha de Ingreso: abril-2012
Mensajes: 45
Antigüedad: 12 años
Puntos: 1
Problema con mail() y adjunto

Buenas, estoy intentando enviar un correo con la función mail de php, el correo lleva un archivo adjunto.

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, -33) == _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); 

Etiquetas: html, mail
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 18:19.