Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Adjuntar Zip o PDF en mail PHP

Estas en el tema de Adjuntar Zip o PDF en mail PHP en el foro de PHP en Foros del Web. Que tal Foreros... Estoy tratando de que php adjunte un archivo zip o un pdf que ya tengo guardado en mi servidor con la funcion ...
  #1 (permalink)  
Antiguo 02/07/2014, 09:49
 
Fecha de Ingreso: julio-2012
Mensajes: 94
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación Adjuntar Zip o PDF en mail PHP

Que tal Foreros...

Estoy tratando de que php adjunte un archivo zip o un pdf que ya tengo guardado en mi servidor con la funcion mail().

Pero no puedo al momento de que se envia el correo, me llega con un zip com ciclado ya que cada que lo descomprimo me saca otro zip y así susecivamente.

Y cuanto mando un PDF este llega vacío.

Esto es lo que tengo (lo copie de otra pagina y lo modifique un poco)

Código PHP:
                       $my_file $nomDoc.".zip"
            
$my_path="./Temp/";
            
$my_name "Prueba";
            
$my_mail "[email protected]";
            
$my_subject "Se envia archivo de prueba.";
            
$my_message "Esta es una prueba de envio de correo adjunto.";
            
mail_attachment($my_file$my_path"[email protected]"$my_mail$my_name$my_subject$my_message);

function 
mail_attachment($filename$path$mailto$from_mail$from_name$subject$message) {
    
$file $path.$filename;
    
$file_size filesize($file);
    
$handle fopen($file"r");
    
$content fread($file$file_size);
    
fclose($handle);
    
$content chunk_split(base64_encode(file_get_contents($filename)));
    
$uid md5(uniqid(time()));
    
$name basename($file);
    
$header "From: ".$from_name." <".$from_mail.">";
    
$header .= "MIME-Version: 1.0";
    
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"";
    
$header .= "This is a multi-part message in MIME format.";
    
$header .= "--".$uid."";
    
$header .= "Content-type:text/plain; charset=iso-8859-1";
    
$header .= "Content-Transfer-Encoding: 7bit";
    
$header .= $message."";
    
$header .= "--".$uid."";
    
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"";
    
$header .= "Content-Transfer-Encoding: base64";
    
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"";
    
$header .= $content."";
mail($mailto$subject""$header)

Espero me puedan ayudar, ya no se que hacer...
Gracias ante todo.
  #2 (permalink)  
Antiguo 02/07/2014, 10:42
Avatar de wizanchez  
Fecha de Ingreso: junio-2013
Ubicación: bogota
Mensajes: 120
Antigüedad: 10 años, 10 meses
Puntos: 6
Respuesta: Adjuntar Zip o PDF en mail PHP

-lo que yo hago es darle un link unico, llega al correo y este link, lleva a mi servidor con el pdf o el zip,
- la ventaja que encontre sobre esto es saber en que fecha y desde que correo, lo hizieron,
para control
__________________
---------
cubesoftechnology.com
Wizanchez,,
  #3 (permalink)  
Antiguo 03/07/2014, 12:46
 
Fecha de Ingreso: julio-2012
Mensajes: 94
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Adjuntar Zip o PDF en mail PHP

Foreros... ya lo he solucionado y se los comparto por si a alguien le llega a pasar, no batalle tanto como yo

1.- Guardamos en variable los parámetros que se vallan a utilizar
Código PHP:
$ruta $_SERVER['DOCUMENT_ROOT']."/ruta_a_tu_archivo/";
$mi_archivo "Archivo_a_enviar.zip";
$mi_nombre "Administrador";
$mi_email "[email protected]";
$email_to "[email protected]";
$mi_titulo "Este es un correo con archivo adjunto";
$mi_mensaje "Esta es el cuerpo de mensaje.";
mail_attachment($mi_archivo$ruta$email_to$mi_email$mi_nombre$mi_titulo$mi_mensaje); 
Funcion:
Código PHP:
function mail_attachment($filename$path$mailto$from_mail$from_name$subject$message) {
  
    
$ruta_completa $path.$filename;
    
$content chunk_split(base64_encode(file_get_contents($ruta_completa)));
    
$uidmd5(uniqid(time()));
    
$bound="--".$uid."\r\n";
    
$last_bound="--".$uid."--\r\n";
    
$header "From: ".$from_name." <".$from_mail.">\r\n";
    
$header .= "MIME-Version: 1.0\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";
    
$header .= $message."\r\n";
    
$header .= $bound;
    
$header .= "Content-Type: application/zip; name=\"".$ruta_completa."\"\r\n"
    
$header .= "Content-Transfer-Encoding: base64\r\n";
    
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n";
    
$header .= $content."\r\n";
    
$header .= $last_bound;

if (
mail($mailto$subject""$header)) {
        echo 
"Correo enviado";
    } else {
        echo 
"ERROR en el envio";
    }
 } 
Si quieren enviar un pdf o algun otro archivo tienen que cambiar la siguiente linea
Código PHP:
$header .= "Content-Type: application/zip; name=\"".$file."\"\r\n"
por esta linea:
Código PHP:
$header .= "Content-Type: application/pdf; name=\"".$file."\"\r\n"
Obviamente la variable $my_file tiene que llevar la extension pdf o la que vallan a usar.

Aquí les dejo una pagina donde se les muestra como iría ese header en base al archivo a udjuntar:
http://webdesign.about.com/od/multim...ntent-type.htm

Etiquetas: adjuntar, mail, pdf, zip
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 19:03.