Situación extraña con Hb_SendMail()

23 views
Skip to first unread message

José Santos Arias Vega

unread,
Nov 23, 2025, 4:30:32 PM11/23/25
to oo...@googlegroups.com, harbourm...@googlegroups.com
Estimados compañeros del grupo.

Me pasa algo extraño con Hb_SendMail(), resulta que tengo un programa que realiza facturas electrónicas para Chile y al emitirla inmediatamente le envìa al cliente un correo con la factura en PDF, posteriormente le envía un correo con el xml de la factura a su casilla de correo.

Al enviar el correo y si no ocurre ningún error se informa que el mail ha sido enviado correctamente, caso contrario da un mensaje de error indicando que hubo un problema en el envío.

Ahora bien mis cliente me reclaman que los correos no les llegan, revisé y todo OK., y luego me fijé que si tengo el outlook abierto los envía sin problemas, pero si no lo tengo abierto no los envía, probé enviando correos con copia a mi correo y efectivamente pasa lo indicado.

Copio el código que utilizo para enviar correos, obviamente las claves no corresponden por seguridad.

Gracias por anticipado.


José Arias Vega

#include "Minigui.ch"

function enviomail(cDatomail,cCorreo)
Local lRespuesta
LOCAL cPopServer    := "alguno.mail.cl"
LOCAL cSMTPServer   := " alguno.mail.cl  "
LOCAL cUser         := "dte...@alguno.cl"
LOCAL cSMTPPassWord := "La_PASS"
LOCAL cFrom         := "dte...@alguno.cl"
LOCAL aTo           := {cCorreo,'jose....@alguno.cl'}
LOCAL aFiles        := {cDatomail}
LOCAL cSubject      := 'Envio DTE Factura Electronica'
LOCAL cBody         := ''
*LOCAL cFecHoy       := DTOC(GetFecServ())


   cBody := ''+CRLF
   cBody += 'Estimados.'+CRLF
   cBody += 'Adjunto a este correo encontraran factura emitida a su empresa.'+CRLF
   cBody += CRLF
   cBody += 'Atentamente'+CRLF
   cBody += CRLF
   cBody += CRLF
   cBody += 'Ekonomik'+CRLF
   cBody += CRLF
   cBody += CRLF
   cBody += CRLF
   cBody += 'Factura emitida a traves de sistema de facturacion JAV Sistemas.cl'+CRLF

   lRespuesta := hb_SendMail( ;
                  cSMTPServer,;              // Servidor
                  587 ,;                      // Puerto  //25
                  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 */
                  .F. ,;                     /* lPopAuth */
                  .T. ,;                     /* lNoAuth */
                  1000 ,;                     /* nTimeOut */
                  NIL ,;                     /* cReplyTo */
                  .F. ,;                     /* lTLS */
                  cSMTPPassWord )


if lRespuesta=.T.
      msinfo('Envio DTE Realizado')
    else
      msginfo('Hubo un error el enviar correo')
   endif


RETURN lRespuesta

Daniel L. Stuardo S.

unread,
Nov 26, 2025, 6:16:16 PM11/26/25
to José Santos Arias Vega, oo...@googlegroups.com, harbourm...@googlegroups.com
hola colega!

estoy entrando recien a minigui, así que no tengo una solución dentro de esta plataforma. Sin embargo, realizando una tarea muy distinta que tuvo que ver con tareas programadas, me di cuenta de podía llamar al sistema con un "tasklist", y buscar en la respuesta (redirigida por pipeline a un aechivo en una carpeta tmp) si existe Outlook. tomo esa respuesta como un ".T." si está activo, y .F. de lo contrario.
Así solvento cosas que en MG no funcan bien, como la reproducción y corte de audios y vídeos, que los hago con ffmpeg para Windows a puros llamados al sistema con EXEcute / Hide.
Ojalá puedas resolver tu problema, y publica la solución por fa, porque es muy interesante.

Saludos!

Daniel L. Stuardo S.
   

--
Has recibido este mensaje porque estás suscrito al grupo "harbourminigui_es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a harbourminigui...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/harbourminigui_es/CAGuw8rUOKNV%2BzBH%3Df00HogiEajGt82OB2%2BV6rKQv9rK-v%2Bhchw%40mail.gmail.com.

José Santos Arias Vega

unread,
Nov 27, 2025, 8:46:56 PM11/27/25
to oo...@googlegroups.com, harbourm...@googlegroups.com
Estimados compañeros.

Siguiendo con esta situación les consulto, cuál es el puerto que utilizan para enviar los correos con HB_Sendmail?

Creo que puede ser por el puerto que utilizo, cualquier sugerencia es bienvenida.

Saludos 


José Arias Vega

José Santos Arias Vega

unread,
Dec 4, 2025, 11:37:31 AM12/4/25
to oo...@googlegroups.com, harbourm...@googlegroups.com
Estimados compañeros.

Problema con HB_Sendmail() resuelto, el problema surgía por que no estaba utilizando el parametro lSSL, adjunto la rutina por si le sirve a lalguien que tenga el mismo problema, la solución la encontré en foro de HMG el link es : hb_SendMail / tip_MailSend y CDO - HMGforum.com los agradecimientos son para Pablo Cesar quien dió la solucion, si gustan pueden entrar al link para revisarlo.

Adjunto la rutina para tenerla, obviamente hay que ponerle los campos de servidor de correo y pass.

/*
   hb_SendMail Demo for GMail
   Copyright 2009 Viktor Szakats (vszakats.net/harbour)
   Compiled with HMG 3.4.3
   Revised demo by Pablo César on December 08th, 2016
 */

#include <hmg.ch>

#if ! defined( __HBSCRIPT__HBSHELL )
REQUEST __HBEXTERN__HBSSL__
#endif

function enviomail(cDatomail,cCorreo)
LOCAL cFrom, cPassword, cTo , cPort, aAtach,cBody,lEnvia

If ! tip_SSL()
   MsgStop("Error: Requires SSL support")
   Return Nil
Endif

hb_default( @cFrom    , "tucorreo@dominio" )
hb_default( @cPassword, "Tupassr" )
hb_default( @cTo      , cCorreo )
hb_default( @cPort    , "465" )
aAtach:={cDatomail}
cBody:="Cuerpo de correo"

lEnvia:= hb_SendMail( "mail.javsistemas.cl",             ;
                       Val(cPort),                   ;
                       cFrom,                        ;
                       cTo,                          ;
                       "co...@copia.cl",                          ;  // CC
                       {},                           ;  // BCC
                       cBody,;                       //"test: Body. Write your text",;
                       "Titulo del Correo",          ;  // Titulo del Correo
                       aAtach,;                      // aAttachments
                       cFrom,                        ;
                       cPassword,                    ;
                       "",                           ;
                       NIL,                          ;  // nPriority
                       NIL,                          ;  // lRead
                       .T.,                          ;  // lTrace
                       .F.,                          ;
                       NIL,                          ;  // lNoAuth
                       NIL,                          ;  // nTimeOut
                       NIL,                          ;  // cReplyTo
                       iif(cPort=="465",.T.,.F.) )    // lSSL

RETURN lEnvia   // Utilizo la variable para saber si el envío fué correcto o no

Se deben incluir las siguientes librerias en archivo .HBC o bien agregarlas en el archivo hmg32.hbc

libs=hbtip
libs=hbssl
libs=libeay32
libs=ssleay32

Además se deben tener en la carpeta donde correrá las siguientes DLL

libeay32.dll
ssleay32.dll

Saludos.


José Arias Vega
Reply all
Reply to author
Forward
0 new messages