Page 1 of 1

adjuntos correo .xls / .xlsx

Posted: Fri Sep 08, 2017 3:09 pm
by edufloriv
Saludos amigos,

No sé si a alguien más le ha pasado que cuando envia como adjunto archivos .xlsx por correo usando nuestra ya conocida función de harbour estos NO se pueden abrir en la bandeja del destinatario, en cambio si se envian con el formato .xls se abren perfectamente sin ningún problema.

Aquí nuestro ya conocido código para envio de correo:

Code: Select all

PROC EnviarCorreoCompras

LOCAL cFecHoy       := DTOC(GetFecServ())
LOCAL cSubject      := 'CONSOLIDADO - REPONER + QUEBRADOS '+cFecHoy
LOCAL cBody         := ''
LOCAL cPopServer    := "mail.miempresa.com.pe"
LOCAL cSMTPServer   := "mail.miempresa.com.pe"
LOCAL cSMTPPassWord := "mipassword"
LOCAL cFrom         := "eflores@miempresa.com.pe"
LOCAL cUser         := "eflores"
LOCAL aTo           := {'compras1@miempresa.com.pe','compras2@miempresa.com.pe'}

   cBody := 'Remito la lista de reposición diaria y lista de quebrados al '+cFecHoy+;
            REPL(chr(13)+chr(10),10)+;
            'SisComFar'+chr(13)+chr(10)+;
            'Sistema automático de informes'

   cAdj1 := RUTA_TEMPS+'Reposicion_Diaria'+SYS_XLS // PUBLIC SYS_XLS := IF( SYS_XLSAVE = 56 , '.XLS' , 'XLSX' ) 
   cAdj2 := RUTA_TEMPS+'Quebrados'+SYS_XLS           // 
   aFiles := { cAdj1 , cAdj2 }

   lRespuesta := hb_SendMail( ;
                  cSMTPServer,;              // Servidor
                  25 ,;                      // Puerto
                  cFrom,;                    // From
                  aTo,;                      // To
                  NIL ,;                     /* CC */
                  NIL ,;                     /* BCC */
                  cBody ,;                   // Body
                  cSubject ,;                // Subject
                  aFiles ,;                  // aFiles attached
                  cFrom ,;                   // User   (obligatorio)
                  cSMTPPassword,;            // Pass (obligatorio)
                  cPopServer,;               // POP Server (obligatorio)
                  3   ,;                     /* nPriority */
                  .F. ,;                     /* lRead */
                  .F. ,;                     /* lTrace */
                  .T. ,;                     /* lPopAuth */
                  .F. ,;                     /* lNoAuth */
                  NIL ,;                     /* nTimeOut */
                  NIL ,;                     /* cReplyTo */
                  .F. ,;                     /* lTLS */
                  cSMTPPassWord )

   IF lRespuesta = .F.
      RobotTrack('ERROR : No se pudo enviar el correo a compras.')
   ENDIF

RETURN
Y este es el error que lanza el Outlook cuando intenta abrir el archvio .xlsx
error-xlsx.jpg
error-xlsx.jpg (37.57 KiB) Viewed 2175 times
Esta es la porción de código que graba el excel, SYS_XLSAVE es una public que puede valer 0 ó 56 actualmente lo estoy usando con 56 para que grabe con formato .xls:

Code: Select all

   IF SYS_XLSAVE = 56
      oExcel:ActiveWorkbook:SaveAs( cExcelNam2 , 56 )  // Para grabar en formato .XLS
   ELSE
      oExcel:ActiveWorkbook:SaveAs( cExcelNam2 )   // Graba en formato .XLSX en Office 2013/2016
   ENDIF
   oWorkBook:Close()
   oExcel:Quit()

   oHoja     := NIL
   oWorkBook := NIL
   oExcel    := NIL
   RELEASE oHoja
   RELEASE oWorkBook
   RELEASE oExcel
El módulo esta corriendo actualmente en una pc con Windows 10 y Office 2016, pero como repito, si cambio PUBLIC SYS_XLSAVE = 0, en la bandeja de entrada ya no puede abrirse la hoja de excel adjunta.

Espero sus comentarios al respecto, saludos a todos y que tengan un excelente día.



Att.

Re: adjuntos correo .xls / .xlsx

Posted: Fri Sep 08, 2017 5:42 pm
by edk
Try to send email via cdo.message:
http://www.hmgforum.com/viewtopic.php?f ... 497#p51497

I use this method to send emails with attached any type of files without problems.

Re: adjuntos correo .xls / .xlsx

Posted: Sat Sep 09, 2017 11:21 am
by danielmaximiliano
El código de viejo sendmail tiene en algún lugar los formatos admisibles para archivos adjuntos...
Es la forma de interpretar y no corromper los mismos al descargarlos del cuerpo del email