Crear y enviar PDF adjunto a un correo


mailpdf

 

Después de mucho tiempo, retomamos los post de programación, para lo cual, les vamos a mostrar este pequeño ejemplo en el que veremos como podemos crear un ejemplo de carta personalizada en formato PDF a través de PHP el cual adjuntaremos a un correo, que será enviado a la dirección de correo del contacto.

Para este ejemplo necesitaremos dos librerías:

Usaremos la clase AttachMailer, porque es la forma mas facil y efectiva de ajustar un archivo PDF  a un correo y enviarlo, pues esta clase fue diseñada exclusivamente para eso, no adjunta ningún otro tipo de archivos.

Para comenzar crearemos un HTML en el cual pediremos el nombre y la dirección de correo electrónico de la persona a la que le enviaremos la carta, veamos el código:

 

formularioenviar

Como se puede apreciar, en la linea 18, comenzamos a crear el formulario , cuyo resultado aparecerá en una pagina o pestaña a parte, lo cual se especifica a través del atributo target, que como vemos esta en «_blank»

En la misma linea se observa que los datos «nombre y correo» serán enviados a un PHP llamado «01enviar.php», ahora veamos  como se ve el mencionado archivo PHP.

 

ENVIAR

 

En la linea 3 agregamos la libreria AttachMailer, en la 4 agregamos el FPDF,  de la linea 6 a la 34 lo que vemos es la modificación de la clase FPDF para que agregue los pie de pagina y encabezados tal y como nos muestran en los manuales de FPDF.

Las lineas 37 y 38 usamos el mysql_real_escape_string para eliminar la inyección SQL al recibir el nombre y la dirección de correo a donde enviaremos los datos, de la linea 40 a la 60 vemos la creación de PDF, observe que en la 61 comenzamos con lo interesante.

 

En la linea 61 usamos el metodo output, indicando como parametros un nombre de archivo y el parámetro «F» para indicarle que el PDF que creamos no se muestre en pantalla, sino que se almacene en un archivo, recuerde que si colocamos los paréntesis vacios, el PDF se muestra a traves del plug-in del navegador, pero en este caso queremos que se guarde en un archivo, aclaremos que el archivo quedara almacenado en la carpeta del servidor donde tenemos el PHP.

Una vez creado el archivo Pdf, hay que adjuntarlo a un correo, en la linea 67 creamos el objeto correo, con los parámetros:

  • desde -dirección de correo desde la cual se enviara el correo ($from)
  • para – dirección de correo destinatario ($to)
  • el asunto del correo
  • el mensaje del correo.

Una vez creado el mensaje, en la 68 usamos el medido attachFile, para adjuntar el archivo indicado en la variable $file, la cual por error colocamos, pues de debió llamar $archivo y es una variable de texto, en la cual usted colocara el nombre del archivo, algo así como

$archivo=»documento.pdf»

 

Nos disculpamos por la omisión de antemano, finalmente en la linea  70 usamos el metodo send, el cual enviara el correo, y devolverá los resultados indicados en la variable $resultado.

 

Una vez que se ejecuta el comando send, el archivo se adjunta y se envía, tiene un poco de retraso, pero nada que sea exagerado,

 

 

 

 

20 Comments

  1. Hola amigos para los que no les funcione tienen primero que loguearse en esta pagina https://www.phpclasses.org/package/5728-PHP-Send-email-message-with-an-attached-PDF-file.html#information y recien descargar la version 2009 de AttachMailer.. después hay dos correciones en el código:
    Poner esto:
    después de $pd->Ln(1.5);
    $archivo = «cualquier_nombre.pdf»; //poner esta variable
    $pd->Output(«F», $archivo); //noten que he cambiado el orden de los parametros
    y obiamente borrar esto: $pd->Output($archivo, «f»);
    Por ultimo borra la linea : $mailer->attachFile($fila); y poner lo siguiente: $mailer->attachFile($archivo);

    //Espero haber aportado…Saludos amigos !!!

    Me gusta

¿Qué estas pensando?

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.