***********************************************************************************
SET PROCEDURE TO LOCFILE("FoxyPreviewer.App") ADDITIVE
LOCAL loReport as "PreviewHelper" OF "FoxyPreviewer.Prg"
loReport = CREATEOBJECT("PreviewHelper")
WITH loReport as ReportHelper
.AddReport("c:\aplicacion\infor\"+"NombredeReport", "NODIALOG")
.cDestFile = "c:\aplicacion\temp\informe.pdf"
.lAutoSendMail = .T.
.nEmailMode = 2
.lEmailAuto = .T.
.lSilent = .T.
.lQuietMode = .T.
.cSMTPServer = "smtp.gmail.com"
.nSMTPPort = 465
.lSMTPUseSSL = .T.
.cSMTPUserName = "usuario"
.cSMTPPassword = "*******"
.cEmailTo = "correo...@gmail.com"
.cEmailFrom = "Empresa <usu...@empresa.es>"
.cEmailSubject = "Asunto de prueba para probar el correo"
.cEmailBodyFile = "c:\Mail.html"
.RunReport()
ENDWITH
loReport = NULL
***********************************************************************************
_ticket = FULLPATH("")+"TicketsClientes\Ticket"+;
SPACE(1)+ALLTRIM(clientesgrid.Nombre)+;
SPACE(1)+ALLTRIM(ventas.Ticket)+".html"
Thisform.ticketemail = _ticket
IF FILE(_ticket)
thisform.olecontrol1.navigate(_ticket)
ELSE
IF MESSAGEBOX("No existe el Archivo de este ticket, desea crearlo?",4+32,"Atención") =6
DO LOCFILE("FoxyPreviewer.App")
SELECT ventas_movimientos
_screen.Visible= .T.
KEYBOARD '{CTRL+F10}'
Report Form reportes\ticketCompra OBJECT TYPE(15) To FILE(_ticket)
_screen.Visible = .F.
thisform.olecontrol1.navigate(_ticket)
RETURN 0
ELSE
ENDIF
ENDIF
LOCAL _archivoEmail as Character
_archivoEmail = Thisform.ticketemail
*WAIT window _archivoEmail
Do FoxyPreviewer.App
With _Screen.oFoxyPreviewer
.lEmailAuto = .T. && Automatically generates the report output file
.cEmailType = "Html" && The file type to be used in Emails (PDF, RTF, HTML or XLS)
.nEmailMode = 2 && 1 = MAPI, 2 = CDOSYS HTML, 3 = CDOSYS TEXT, 4 = Custom procedure
.cEmailTo = ALLTRIM(clientesgrid.Email) &&&6Alltrim(Thisform.txtemail.Value)
.cSMTPServer = 'smtp.gmail.com'
.cEmailFrom = ALLTRIM(clientesgrid.Email)
.cEmailSubject = "Ticket compra a Crédito (Fecha realizado: "+TTOC(DATETIME())+')'
.nSMTPPort = 465
.lSMTPUseSSL = .T.
.cSMTPUserName = ALLTRIM(parametros.EmailReceptor) &&&&&Alltrim(tmpvendedor.correo)
.cSMTPPassword = ALLTRIM(parametros.Pass1) &&&&&&Alltrim(tmpvendedor.pase)
.lReadReceipt = .T.
.lPriority = .T.
.cEmailBody = "<HTML><BR>"+ "Adjunto Ticket compra a crédito en Jugos Itzamara" + TTOC(DATETIME())+" </b></HTML>"
cfile = _archivoEmail &&&'file://'+FULLPATH(CURDIR())+'firmas\firma.html'
.cEmailBodyFile = cfile
.SendEmailUsingCDO(cfile)
ENDWITHHe probado las sugerencias propuestas, me parecen muy interesantes, de hecho no sabía que se podía enviar un adjunto que ya tenías creado, y me ha venido genial pues para este caso es lo que necesitaba, pues envió el mismo archivo en todos los correos, esto me evita tener que crearlo cada vez.
He reescrito el código tal como me indicáis y funciona perfectamente, pero sigue sin funcionarme incluir una firma al final del cuerpo del correo con los datos de la empresa. Veo que en un ejemplo usáis la opción cEmailBodyFile pero por más que lo he probado no logro que me lo coja. He creado un fichero HTML muy sencillo con los datos de la empresa, sin imágenes, solo texto, pero necesitaba que estuviera en un archivo independiente, pues el propio cliente lo necesita retocar de vez en cuando, y lo he ubicado en el raíz del disco duro para hacer las pruebas. Lo he llamado “firmas.html”. Después lo indico en la opción pero como digo no me lo añade al cuerpo del mensaje. Esta misma opción la uso cuando envió un correo pero primero previsualizando el informe y desde allí pinchando en el botón de “Enviar email” y me funciona perfectamente, a lo mejor es que si no muestra el correo en pantalla antes de enviar no lo carga.
¿A vosotros si os funciona esta opción en el ejemplo que me enviasteis? Vuelvo a subir el código que uso ya rectificado según vuestros consejos y simplificado al máximo, en el solo envió un archivo ya en PDF, detallo el asunto y un pequeño texto en el cuerpo, y le indico que me coja la firma de la empresa. Lo he probado también sin usar cEmailBody, por si interfería con cEmailBodyFile pero tampoco me añade la firma
De nuevo muchas gracias,
El código es el siguiente
***********************************************************************************
local lcEmailBodyFile,lcDestFile
lcEmailBodyFile = "c:\Mail.html"
lcDestFile = "c:\informe.pdf"
Do FoxyPreviewer.App
WITH _SCREEN.oFoxyPreviewer
.cLanguage = "SPANISH"
.nEmailMode = 2
.lEmailAuto = .T.
.cEmailType = "PDF"
.lSilent =.T.
.cSMTPServer = "smtp.gmail.com"
.nSMTPPort = 465
.lSMTPUseSSL = .T.
.cSMTPUserName = "usuario"
.cSMTPPassword = "*******"
.cEmailTo = "correo...@gmail.com"
.cEmailFrom = "Empresa <usu...@empresa.es>"
.cEmailSubject = "Asunto de prueba para probar el correo"
.cEmailBody = "<HTML><BR>Información sobre su pedido. Etc.....</b></HTML>"
.cEmailBodyFile = lcEmailBodyFile
.SendEmailUsingCDO(lcDestFile)
ENDWITH
***********************************************************************************
***********************************************************************************
&& Ejemplo de envio automatico con uso de cEmailBodyFile que no me funciona
local lcEmailBodyFile,lcDestFile
lcEmailBodyFile = "c:\Mail.html"
lcDestFile = "c:\informe.pdf"
Do FoxyPreviewer.App
WITH _SCREEN.oFoxyPreviewer
.cLanguage = "SPANISH"
.nEmailMode = 2
.lEmailAuto = .T.
.lSilent =.T.
.cSMTPServer = "smtp.gmail.com"
.nSMTPPort = 465
.lSMTPUseSSL = .T.
.cSMTPUserName = "usuario"
.cSMTPPassword = "*******"
.cEmailTo = "correo...@gmail.com"
.cEmailFrom = "Empresa <usu...@empresa.es>"
.cEmailSubject = "Asunto de prueba para probar el correo"
.cEmailBodyFile = lcEmailBodyFile
.SendEmailUsingCDO(lcDestFile)
ENDWITH
***********************************************************************************
&& Para solucionarlo si detecto que quiere enviar fichero html lo cargo como Cuerpo directamente
LOCAL lnTamaFich
lnTamaFich=0
IF !empty(lcEmailBodyFile)
if file(lcEmailBodyFile)
Fi=FOPEN(lcEmailBodyFile)
lnTamaFich=FSEEK(Fi,0,2)
=FSEEK(Fi,0,0)
IF lnTamaFich > 0
lcEmailBody=FREAD(Fi,lnTamaFich)
ENDIF
=FCLOSE(Fi)
endif
ENDIF
.cEmailBody = lcEmailBody
***********************************************************************************