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:

Unknown dijo...

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

Néstor Lesna dijo...

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.

Jhon Cortes dijo...

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.

Néstor Lesna dijo...

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.

NEFTALY GARCIA dijo...

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

Néstor Lesna dijo...

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.

NEFTALY GARCIA dijo...

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 _

Unknown dijo...

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??

Néstor Lesna dijo...

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

Anónimo dijo...

Gracias!!!!

Iván Guevara dijo...

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.

Néstor Lesna dijo...

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

GXJunior dijo...

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

Josselhin Moreira dijo...

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

Néstor Lesna dijo...

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.

Anónimo dijo...

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

Anónimo dijo...

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

Néstor Lesna dijo...

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

Anónimo dijo...

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.