Page 1 of 1

Necesito una clase para envio de eMail que funcione con FW

PostPosted: Sun May 24, 2015 5:18 pm
by gsabattino
Saludos a Todos...

Aun cuando tengo algunos añitos desarrollando con xHarbour+FW, hay temas que nunca tuve la necesidad de tocar y que se me están presentando a estas alturas...

Necesito una clase que realmente funcione para enviar eMail's desde una aplicación FW+xH usando cualquier servidor de correos SMTP (GMail, Hotmail/Outlook, Yahoo, y demás proveedores de servicios que incluyan SMTP)...

Leyendo post's relacionados con el tema veo que está el famoso CDO... que, visto por encimita, me pareció un "tiro al piso"... pero al implementarlo me encontré con que funciona bien con unas cuentas y con otras no... funciona con bien unos servidores SMTP y con otros no... así que la alegría no me duró mucho tiempo... lo mas típico es que de el mensaje de error "error: 1001; SubC: 3; OSCode: 0; SubSystem: CDO.Message; Message: DISP_E_MEMBERNOTFOUND"...

ejemplo: con GMail, configuración smtp.gmail.com/465/SSL/Auth/gsabattino@gm.com/123456 se envían los correos perfecto con sus adjuntos... pero al cambiar la configuración a smtp.gmail.com/465/SSL/Auth/guayoyosoft@gm.com/654321 da el error comentado... (coloco intencionalmente gm.com como referencia a gmail.com)...
se puede notar que la única diferencia es la cuenta desde la cual se desea enviar el correo... que explicación hay a que funcione en el primer caso y en el segundo no???
he tenido especial cuidado en colocar correctamente los parámetros requeridos por cada servidor SMTP, así como los datos correctos de la cuenta (usuario/clave) y siempre el mismo resultado... funciona con unos y con otros no...

Mirando los post's relacionados con el tema veo que muchos compañeros han tenido mas o menos el mismo problema... he probado las soluciones sugeridas (las pocas que dan) y CDO sigue negándose a funcionar con ciertas cuentas y/o ciertos servidores SMTP...

Entonces la gran pregunta...
Si aparentemente CDO no es algo que funcione siempre, que otra solucion existe para integrar el envío de eMail's a una aplicación FW+xHarbour???

Agradecido de antemano por las Orientaciones y/o comentarios...

Giancarlo Sabattino
Valencia, Venezuela

Re: Necesito una clase para envio de eMail que funcione con FW

PostPosted: Mon May 25, 2015 1:02 am
by jnavas
jean Carlos
Requieres tener outook definido,
Saludos, cuando puedas escribeme jnavas@datapronet.com

Code: Select all  Expand view
FUNCTION ENVIARMAIL(cTitle,aMail,cFile)
    LOCAL oOutLook,oMensaje,oAdjunto
    LOCAL cCuerpo:="",I

    DEFAULT cTitle :="Presupuesto Desde AdaptaPro",;
            cFile  :="c:\adaptapro\temp\ctz-0000000124.html"

    cCuerpo:=MEMOREAD(cFile)
   
    IF Empty(cCuerpo)
       MsgMemo("Archivo "+cFile+", está vacio.")
       RETURN .F.
    ENDIF

    IF Empty(aMail)
       MsgMemo("No hay Cuentas de Correo")
       RETURN .F.
    ENDIF

    IF Empty(aMail)
       AADD(aMail,"jnavas@datapronet.com")
    ENDIF
 
    oOutLook:=TOleAuto():New("Outlook.Application")
 
    SysRefresh(.T.)

    oMensaje:=oOutLook:Invoke("CreateItem",0)
    oMensaje:Set("To",aMail[1])

    FOR I=2 TO LEN(aMail)
//   oMensaje:Set("CC","patricia@datapronet.com")
     oMensaje:Set("CC",aMail[I])
    NEXT I

    SysRefresh(.T.)

    oMensaje:Set("Subject",cTitle)
    oMensaje:Set("HTMLBody",cCuerpo)

    SysRefresh(.T.)

    oAdjunto := oMensaje:Invoke("Attachments")
    oMensaje:Invoke("Send")
 
    oAdjunto:End()
    oMensaje:End()

    oOutLook:End()
 
RETURN .T.
// EOF

 

Re: Necesito una clase para envio de eMail que funcione con FW

PostPosted: Thu Jun 11, 2015 4:11 pm
by VitalJavier
Contacta con William, yo tengo un activex que el me paso y hasta la fecha funciona muy bien

Re: Necesito una clase para envio de eMail que funcione con FW

PostPosted: Thu Jun 11, 2015 5:53 pm
by Armando
Giancarlo:

Se que hay varias clases en FW que te hacen la labor, pero si puedes desprenderte de algunos dólares
te recomiendo MailBee http://www.afterlogic.com/purchase/email-components
Pueden envirar y recibir, leer encabezados, cuerpo del correo, adjuntos, y varios etc. etc.

Aclaro, no soy distribuidor, solo soy un usuario satisfecho.

Saludos

Re: Necesito una clase para envio de eMail que funcione con FW

PostPosted: Thu Jun 11, 2015 6:36 pm
by karinha
Code: Select all  Expand view

#Include "FiveWin.ch"

Function ENVIA_ERRO()

   LOCAL oSmtp, oEMail
   LOCAL cSmtpUrl
   LOCAL cSubject, cFrom, cTo, cBody, cFile

   cSmtpUrl := "smtp://meuemail:senha@smtp.mail.yahoo.com.br"
   cFrom  := "meuemail@yahoo.com.br"
   cTo   := "meuemail@ymail.com"

   cSubject := [Envio de erro do programa]

   cFile  := "COMP.LOG" //cNOME

   cBody  := [Envio de erro do programa]

   oEMail := TIpMail():new()
   oEMail:setHeader( cSubject, cFrom, cTo )
   oEMail:setBody( cBody )
   oEMail:attachFile( cFile )

   //oEMail:hHeaders[ "Disposition-Notification-To" ] := cFrom // solicita confirmacao

   oSmtp := TIpClientSmtp():new( cSmtpUrl )

   IF oSmtp:open()

      oSmtp:sendMail( oEMail )

      oSmtp:close()

      MSGINFO( [Email enviado com sucesso], [Aviso] )

   ELSE

      MSGINFO( "Erro:", oSmtp:lastErrorMessage() )

   ENDIF

RETURN Nil

// FIM DO PROGRAMA
 



Re: Necesito una clase para envio de eMail que funcione con FW

PostPosted: Mon Jun 15, 2015 3:51 pm
by devtuxtla
Hola karinha

Estoy verificando la solucion que propones, pero requiere que la dll se registre en el registro de windows, tienes un ejemplo de como se puede registrar la dll en la pc del cliente ?

Gracias

Saludos

Re: Necesito una clase para envio de eMail que funcione con FW

PostPosted: Mon Jun 15, 2015 4:05 pm
by karinha
Que DLL? no tiens que registrar nada. Solo hay tener un proveedor de correo en tu FTP. salu2.

Re: Necesito una clase para envio de eMail que funcione con FW

PostPosted: Tue Jun 16, 2015 8:38 pm
by devtuxtla
Hola Karinha.

Una disculpa, no era para ti la pregunta...

Esta pregunta es para armando, en referencia a la opcion de mail que recomienda...

Armando...

Sabes como registrar la DLL en la pc del cliente, a traves de nuestra aplicacion para no molestar al cliente ?

Saludos

Re: Necesito una clase para envio de eMail que funcione con FW

PostPosted: Wed Jun 17, 2015 8:48 pm
by guapilescity
karinha wrote:
Code: Select all  Expand view

#Include "FiveWin.ch"

Function ENVIA_ERRO()

   LOCAL oSmtp, oEMail
   LOCAL cSmtpUrl
   LOCAL cSubject, cFrom, cTo, cBody, cFile

Prodrian explicarme  un poco mas que deber de ir en el  cSmtpUrl  cuando utilizamos gmail.com
por favor

   cSmtpUrl := "smtp://meuemail:senha@smtp.mail.yahoo.com.br"
   cFrom  := "meuemail@yahoo.com.br"
   cTo   := "meuemail@ymail.com"

   cSubject := [Envio de erro do programa]

   cFile  := "COMP.LOG" //cNOME

   cBody  := [Envio de erro do programa]

   oEMail := TIpMail():new()
   oEMail:setHeader( cSubject, cFrom, cTo )
   oEMail:setBody( cBody )
   oEMail:attachFile( cFile )

   //oEMail:hHeaders[ "Disposition-Notification-To" ] := cFrom // solicita confirmacao

   oSmtp := TIpClientSmtp():new( cSmtpUrl )

   IF oSmtp:open()

      oSmtp:sendMail( oEMail )

      oSmtp:close()

      MSGINFO( [Email enviado com sucesso], [Aviso] )

   ELSE

      MSGINFO( "Erro:", oSmtp:lastErrorMessage() )

   ENDIF

RETURN Nil

// FIM DO PROGRAMA