sábado, 2 de mayo de 2009

Genexus,enviar mail con pdf adjunto

Esto lo he tenido que hacer 2 veces y como la primera fue hace algunos años y la otra fue hace unos días, en la segunda oportunidad estuve un rato largo acordándome de cada una de las cosas que hice en la primera.




La idea es que un proceso genera un pdf y automáticamente sin interacción del usuario se envía un mail (o muchos mail's).




Bueno en genexus para que se genere un reporte en formato pdf, lo que hay que hacer son 3 cosas.


1 - marcar que el reporte sea main


2 - call protocol como HTML


3 - una regla Output_file(&nombre, "pdf"); siendo nombre el nombre del pdf, con el .pdf




con esto genexus sabe que el reporte lo genera en formato pdf.




Ahora lo que queremos es que ese archivos se genere pero quede guardado en el servidor en alguna ruta que se pueda ,entonces cambiamos &nombre por el nombre completo de la ruta, por ejemplo /home/arch.pdf, y esa variable debe de llegar al reporte y debe de ser in, ejemplo


param(in:&nombre);


Y además en el call protocol hay que cambiar de HTML a Internal.




Con estos cambios tenemos el pdf en una ruta conocida del servidor, ahora lo único que hay que hacer es hacer algún proceso que envié el mail, para esto se pueden utilizar varias formas, pero lo que hay que hacer es una variable del tipo MailMessage, adjuntarle el pdf, MailMessage.attach(&nombre), y luego seguir con el resto de las cosas para enviar el mail.


Volver al inicio

19 comentarios:

  1. Muy bueno, el blog, pero me gustaria saber si esto funciona para un ambiente web y no cliente servidor, y si es asi como se realiza?, diegovegal@hotmail.com

    ResponderEliminar
  2. Diego, perdon por no contesarte antes. La respues es un si muy grande, esto funciona en web, es mas todo lo que he escrito lo uso en un ambiente web porque hace ya varios años que solo trabajo en web. Pero esto tambien te funcinaria en win casi de la misma forma.

    ResponderEliminar
  3. Hola me llamo john y quiero saber si me podes decir como genero archivos pdf en una aplicacion win con gx8 , ya que no me lo genera , sin embargo a nivel web si me lo realiza el gx 9.

    ResponderEliminar
  4. Realmente hace muchísimo tiempo que no utilizo gx8. Pero lo que te puedo decir es que depende en que estés generando para ver que necesitas. Quizás date una vuelta por gxsearch que vas a encontrar muchos comentarios.

    ResponderEliminar
  5. Hola me funciona pero me escribe toda la ruta del linux te sucede lo mismo estoy en GeneXus X.

    ResponderEliminar
  6. Te esta saliendo en el pdf que enviás por mail, una linea con la ruta del linux? (nunca me paso) o te esta generando el nombre del archivo con la ruta del linux?. Esto segundo alguna vez me paso, pero realmente no recuerdo como lo solucione. Perdón.

    ResponderEliminar
  7. Si me esta sucediendo me esta colocando toda la ruta del LINUX es decir el archivo.pdf

    me aparece cuando hago el atach y lo envio:

    _u01_product_oracle_j2ee_application_webtemo_archivo.pdf

    en vez de los / aparecen _

    ResponderEliminar
  8. Hola, Mi nombre es Victor Giraldo, estoy tratando de implementar esta solucion, pero no me ha querido funcionar.

    estoy trabajando en la X evo U3.

    sabes de algun inconveniente por estar trabajando en esta version??

    ResponderEliminar
  9. Realmente nunca lo probe en Gx Evo. No te puedo ayudar.

    ResponderEliminar
  10. Muy buena la descripcion de como hacerlo, pero estoy teniendo un problema con una imagen que tengo en el header, al poner el protocolo como HTTP me anda, pero al ponerlo como internal me generala el pdf con los info que quiero y la imagen no aparece. Te ha sucedido?
    Gracias.

    ResponderEliminar
  11. La verdad no he probado enviar pdf con imágenes, asi que no voy a poder ayudarte.

    ResponderEliminar
  12. Para invocar un reporte en evolution el reporte debe ser llamado asi: reporte.call(&variables) o &Window.object = create(reporte,&variables)
    &WIndow.Width = tamaño
    &WIndow.Heigth = tamaño
    &WIndow.Open
    Para que no halla error al generar el reporte

    ResponderEliminar
  13. hola..
    como podria enviar un archivo excel en ambiente web...
    eh llegado hasta el output_file()
    pero no me acepta el xls..

    ResponderEliminar
  14. Josselhin, primero para crear un excel debes usar el tipo de datos ExcelDocument, con esto te va a facilitar generarlo. Supongo que estas en un ambiente web, en el cual se me ocurren 2 cosas, una es generar el archivo, que este se guarde en disco, y luego en el envío de mail adjuntar este excel con la ruta directa del disco, la otra opción seria guardar este excel en un blob de la base de datos y luego adjuntar este a un mail. Saludos y espero te ayude.

    ResponderEliminar
  15. No logro guardar el documento en pdf para poder adjuntarlo :( tengo dias probando todo lo que me dicen y nada.
    EV1 U7

    ResponderEliminar
  16. No he podido lograr que me guarde el pdf :( tengo dias intentanto todo lo q dicen pero nada :( EV1, U7

    ResponderEliminar
  17. Anonimo!! te da algún error? tenes permiso para escribir en la carpeta temporal? miraste el log del tomcat?

    ResponderEliminar
  18. Muchas gracias Nestor Lesna. Tu vital ayuda tiene para mi un valor incalculable. Que dios te bendiga y te tenga en la gloria.

    Saludos,
    Sebita.

    ResponderEliminar