Enviar informe pdf via email

Post Reply
User avatar
J. Ernesto
Posts: 161
Joined: Tue Feb 03, 2009 10:08 pm
Location: Bogotá D.C. Colombia
Contact:

Enviar informe pdf via email

Post by J. Ernesto »

Compañeros buenas

Necesito enviar un informe diario en el formato PDF:

1- Generar automáticamente el informe en PDF, sin que intervenga el usuario,
2- Guardarlo en una carpeta ese mismo informe sin intervención de usuario,
3- y Enviarlo automáticamente vía EMail a varios usuarios.

Agradezco un pequeño ejemplo.

Desde ya muchas gracias
J. Ernesto Pinto Q.
Fwh_x64 2407 + BCC++_x64 7_70__6_72 + Harbour 3.20 + LopeEdit 5.8 + UEstudio 26.0
jepsys@hotmail.com, jepsys@gmail.com, jepsys@yahoo.com
surGom
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm
Contact:

Re: Enviar informe pdf via email

Post by surGom »

Ernesto yo uso para estos casos la clase tpdf.

https://drive.google.com/file/d/0B8UT40 ... sp=sharing

Ahí hay un pequeño ejemplo, y un pdf generado. Esta para utilizar en Harbour


Luis
User avatar
J. Ernesto
Posts: 161
Joined: Tue Feb 03, 2009 10:08 pm
Location: Bogotá D.C. Colombia
Contact:

Re: Enviar informe pdf via email, generar pdf solucionado

Post by J. Ernesto »

Luis muchas gracias

Descargando, voy a analizarlo y hacer pruebas

La generación del PDF si intervención del usuario esta solucionada de la siguiente forma:

Code: Select all | Expand


 PRINT oPrn NAME 'Print_10_2' FILE "prueba_2.pdf"                                                                 && FROM USER PREVIEW FILE "prueba.pdf"
 


La idea ahora es ese mismo archivo PDF enviárselo a una serie de clientes vía EMail.

Gracias
J. Ernesto Pinto Q.
Fwh_x64 2407 + BCC++_x64 7_70__6_72 + Harbour 3.20 + LopeEdit 5.8 + UEstudio 26.0
jepsys@hotmail.com, jepsys@gmail.com, jepsys@yahoo.com
surGom
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm
Contact:

Re: Enviar informe pdf via email

Post by surGom »

Ernesto uso esa clase para enviar los pdf directamente desde un prg ya que es bastante limitada en cuanto el uso de fuentes, pero muy efectiva y hace los pdf muy livianos.


Luis
postinelli
Posts: 149
Joined: Tue Jul 15, 2008 7:12 pm
Location: Argentina

Re: Enviar informe pdf via email

Post by postinelli »

Hola Ernesto

así lo hago yo

Function GMAILME (cDestino,cAsunto,cTexto,cAdjunto )

Local oEmailCfg,oEmailMsg,oError,cHtml

/*
Local ListaEmail:= GetPvProfString("Reportes","EMAIL","NO", cIniFile)
Local xserver := GetPvProfString("Reportes","SERVEREMAIL","", cIniFile)
Local xpuerto := VAL(GetPvProfString("Reportes","PUERTOEMAIL","", cIniFile))
Local xrememail := GetPvProfString("Reportes","REMITEEMAIL","", cIniFile)
Local xremnombre:= GetPvProfString("Reportes","USUARIOEMAIL","", cIniFile)
Local xclave := GetPvProfString("Reportes","PASSWEMAIL","", cIniFile)
*/


//DEFAULT cAdjunto:="cAdjunto"
DEFAULT cAsunto :="From"
DEFAULT cTexto := "cTexto"

if Empty(cDestino )
MsgWait("No ha puesto un destinatario")
Return .f.
endif

TRY
oEmailCfg := CREATEOBJECT( "CDO.Configuration" )
WITH OBJECT oEmailCfg:Fields
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value :=xserver // "smtp.gmail.com"
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := xpuerto //465
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2 // Remote SMTP = 2, local = 1
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .T.
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := .F.
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := xrememail // User
:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := xclave // Password
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 30
:Update()
END WITH
CATCH oError
MsgInfo( "No se ha enviado el " + ";" + ;
"Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + ;
"SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + ;
"OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + ;
"SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" + ;
"Message: " + oError:Description )
END
oError:=NIL

TRY
oEmailMsg := CREATEOBJECT ( "CDO.Message" )
WITH OBJECT oEmailMsg
:Configuration = oEmailCfg
:From = chr(34)+'IDE' +chr(34)+ xrememail
//:From = chr(34)+"IDE"+chr(34) + "<ide.jardin@speedy.com.ar>" // lo que quieras que aparezca en el mensaje
:To = cDestino
:Subject = cAsunto
:MDNRequested = .T.
:TextBody = cTexto
if !Empty(cAdjunto)
:AddAttachment(cAdjunto)
endif
END WITH
oEmailMsg:Send()
CATCH oError
MsgWait("No se ha enviado el mensaje" + ";" + CRLF+ ;
"Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + CRLF+;
"SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + CRLF+ ;
"OSCode: "+ TRANSFORM(oError:OsCode, NIL) + ";" + CRLF +;
"SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" +CRLF+ ;
"Message: " + oError:Description )
END

//MsgInfo("Correo enviado correctamente")

Return .T.
//----------------------------------------------------------------------------//
User avatar
J. Ernesto
Posts: 161
Joined: Tue Feb 03, 2009 10:08 pm
Location: Bogotá D.C. Colombia
Contact:

Re: Enviar informe pdf via email

Post by J. Ernesto »

Postinelli Gracias

Al probar el ejemplo me genera el error que aparece en la siguiente imagen:

"Message: El Protocolo especificado es desconocido"
(0x800C000D)

[img]
http://s4.postimg.org/6mal1m4p9/error_email.jpg
[/img]

Que me hace falta enlazar en la compilación, o como hago para solucionar este error
J. Ernesto Pinto Q.
Fwh_x64 2407 + BCC++_x64 7_70__6_72 + Harbour 3.20 + LopeEdit 5.8 + UEstudio 26.0
jepsys@hotmail.com, jepsys@gmail.com, jepsys@yahoo.com
surGom
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm
Contact:

Re: Enviar informe pdf via email

Post by surGom »

Ernesto ahí ya no sé cual puede ser el error yo uso el programa Rmail de Ricardo de Moura Marques

Este es el que utilizo tanto en harbour como los hechos en xharbour

https://www.4shared.com/file/_RZoap7Cce/RMail.html

No se si esto te pueda ayudar

Luis
postinelli
Posts: 149
Joined: Tue Jul 15, 2008 7:12 pm
Location: Argentina

Re: Enviar informe pdf via email

Post by postinelli »

Hola Ernesto

no es error compilacion ni que te falte algo
es un problema de configuracion de tu cuenta de correo

gmail utiliza el puerto 465, pero el puerto habitual para las cuentas smtp es 25

además debes verificar si valida ssl

aqui te paso la misma funcion pero que tiene para validad ssl, me parece que ese es tu problema


//-----------------------------------------------------------------------------------------------
Function GMAILME (cDestino,cAsunto,cTexto,cAdjunto )

Local oEmailCfg,oEmailMsg,oError,cHtml

Local cServer:= GetPvProfString("Enviador","SERVERSTP" ,"", cIniFile)
Local nPortEmail:=VAL(GetPvProfString("Enviador","EMAILPUERTO","25", cIniFile))
Local cEmailFrom:=GetPvProfString("Enviador","EMAILFROM" ,"", cIniFile)
Local cEmailUser:=GetPvProfString("Enviador","EMAILUSER" ,"", cIniFile)
Local cEmailPass:=GetPvProfString("Enviador","EMAILPASSW" ,"", cIniFile)
Local cEmailSsl:=GetPvProfString("Enviador","EMAILSSL" ,"NO", cIniFile)

DEFAULT cAdjunto:=""
DEFAULT cAsunto :=""
DEFAULT cTexto := ""

if Empty(cDestino )
msgAlert("no ha puesto un destinatario")
Return .f.
endif

TRY
oEmailCfg := CREATEOBJECT( "CDO.Configuration" )
WITH OBJECT oEmailCfg:Fields
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := cServer //"smtp.fibertel.com.ar" ///"smtp.gmail.com"
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := nPortEmail //25 //465
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2 // Remote SMTP = 2, local = 1
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .T.
if cEmailSsl='SI'
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := .T. //para servidores con ssl
else
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := .F. //para servidores sin ssl
endif
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := cEmailUser //
:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := cEmailPass //
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 30
:Update()
END WITH
CATCH oError
MsgInfo( "No se ha enviado el " + ";" + ;
"Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + ;
"SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + ;
"OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + ;
"SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" + ;
"Message: " + oError:Description )
END
oError:=NIL

TRY
oEmailMsg := CREATEOBJECT ( "CDO.Message" )
WITH OBJECT oEmailMsg
:Configuration = oEmailCfg
:From = chr(34)+Empresa+' '+chr(34) + '<'+cEmailFrom+'>' // This will be displayed in the From (The email id does not appear)
:To = cDestino
:Subject = cAsunto
:MDNRequested = .T.
:TextBody = cTexto
if !Empty(cAdjunto)
:AddAttachment(cAdjunto)
endif

END WITH
oEmailMsg:Send()
CATCH oError
MsgInfo("No se ha enviado el mensaje" + ";" + CRLF+ ;
"Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + CRLF+;
"SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + CRLF+ ;
"OSCode: "+ TRANSFORM(oError:OsCode, NIL) + ";" + CRLF +;
"SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" +CRLF+ ;
"Message: " + oError:Description )
END

// MsgInfo("Correo enviado correctamente")

Return .T.
//-----------------------------------------------------------------------------------------------
User avatar
J. Ernesto
Posts: 161
Joined: Tue Feb 03, 2009 10:08 pm
Location: Bogotá D.C. Colombia
Contact:

Re: Enviar informe pdf via email

Post by J. Ernesto »

Muchas gracias

La función RMail.prg, funciono bien, solo hay que hacer unos ajustes, en mi caso necesito que sin que el usuario se de cuenta, enviar informes de auditoria a una sede central.

Tiene bastante usos estas rutinas, como validar donde se estan ejecutando nuestros programas, en el caso de post anteriores donde se buscaba una forma de hacerlo.

Probare la última solucion cmbiando el puerto

Gracias por la colaboracion.

Saluods
J. Ernesto Pinto Q.
Fwh_x64 2407 + BCC++_x64 7_70__6_72 + Harbour 3.20 + LopeEdit 5.8 + UEstudio 26.0
jepsys@hotmail.com, jepsys@gmail.com, jepsys@yahoo.com
Post Reply