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
Enviar informe pdf via email
- J. Ernesto
- Posts: 161
- Joined: Tue Feb 03, 2009 10:08 pm
- Location: Bogotá D.C. Colombia
- Contact:
Enviar informe pdf via email
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
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
Re: Enviar informe pdf via email
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
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
- 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
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:
La idea ahora es ese mismo archivo PDF enviárselo a una serie de clientes vía EMail.
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
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
Re: Enviar informe pdf via email
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
Luis
-
- Posts: 149
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: Enviar informe pdf via email
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.
//----------------------------------------------------------------------------//
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.
//----------------------------------------------------------------------------//
- J. Ernesto
- Posts: 161
- Joined: Tue Feb 03, 2009 10:08 pm
- Location: Bogotá D.C. Colombia
- Contact:
Re: Enviar informe pdf via email
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
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
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
Re: Enviar informe pdf via email
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
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
-
- Posts: 149
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: Enviar informe pdf via email
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.
//-----------------------------------------------------------------------------------------------
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.
//-----------------------------------------------------------------------------------------------
- J. Ernesto
- Posts: 161
- Joined: Tue Feb 03, 2009 10:08 pm
- Location: Bogotá D.C. Colombia
- Contact:
Re: Enviar informe pdf via email
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
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
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