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,

 

 

 

 

Anuncios

Acerca de sistemasumma

Blog dedicado a la tecnología y a todos los estudiantes de sistemas, informatica, computación y afines
Esta entrada fue publicada en General y etiquetada , , , . Guarda el enlace permanente.

19 respuestas a Crear y enviar PDF adjunto a un correo

  1. Anónimo dijo:

    Hola! ha pasado un tiempo de este post pero alguien me podría ayudar? Tengo que crear un formulario, que se genere un pdf y q a su vez se envíe por correo

    Me gusta

  2. Probé el código pero después de validar usando la función send(), sale el segundo estado de “Problema al enviar” alguna idea ya corrobore que agregue la librería correcta y esta bien

    Me gusta

  3. Anonimo dijo:

    el archivo “conecta.php” que incluyes en la linea 2 que código es el que ejecuta??

    Me gusta

  4. wilson dijo:

    Hola disculpa de donde descargaste ese paquete ? porq he descargado del link de arriba el AttachMailer pero dentro no hay ninguna funcion que se llame attachFile y la clase se llama diferente puedes ayudarme ? mi correo es coronadoew18@gmail.com

    Me gusta

  5. En la Línea 61 está el error, debeis comprobar que archivo se os crea en el servidor, en mi caso es doc.pdf
    Modificando el codigo en la línea 61 y declarando en la línea 62 $archivo se corrige el error de lectura del PDF.

    $pd->Output($archivo,”doc.pdf”);
    $archivo=”doc.pdf”;

    Me gusta

  6. insolucionesblog dijo:

    Van a compartir “conocimiento” que ni siquiera ustedes dominan? Gracias?

    Me gusta

  7. Dennis dijo:

    Estimado, probe el código y si logro enviar el PDF, pero al intentar abrir me sale que el documento esta dañado y/o se envio como adjunto de correo electrónico y no se decodifico correctamente, tu ayuda por favor. Muchas gracias.

    Me gusta

  8. Marco Palacios dijo:

    disculpa, mi pregunta, duda o como quieras llamarlo es… donde debo guardar los archivos de las librerias, ya las descargue y ya las descomprimi y ahora en donde van guardadas

    Me gusta

  9. Walter dijo:

    No funciona, esta mal programado

    Me gusta

  10. Liliana dijo:

    Si ya sabes donde estan los errores, porque no los corriges?

    Me gusta

  11. Mario Campos dijo:

    Estimados,
    Dónde se puede descargar el código completo?

    Slds,

    Me gusta

  12. Una pregunta, ¿Cómo podría modificar el AttachMailer para configurar un servidor smtp con autenticación? Mi servidor ya no envía correos si no se loguea al servidor SMTP.

    Me gusta

  13. Anónimo dijo:

    para el problema del $to si falta solamente colocalo despues del $from con la direccion del correo al cual enviaras el email asi:
    $to=”abc@gmail.com”
    o agregando el correo desde una consulta

    Me gusta

  14. Anónimo dijo:

    Buen día, Disculpa estoy viendo el ejemplo pero no falta el $to en el código.

    Ok espero su respuesta la otra es como me doy cuenta que llego el correo a su destino existe alguna forma de saberlo?

    Saludos

    Me gusta

¿Qué estas pensando?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s