Necesito una clase para envio de eMail que funcione con FW

Post Reply
User avatar
gsabattino
Posts: 100
Joined: Fri Oct 14, 2005 12:03 am
Location: Valencia, Venezuela

Necesito una clase para envio de eMail que funcione con FW

Post 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
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

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

Post by jnavas »

jean Carlos
Requieres tener outook definido,
Saludos, cuando puedas escribeme jnavas@datapronet.com

Code: Select all

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

 
VitalJavier
Posts: 188
Joined: Mon Jun 10, 2013 6:40 pm

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

Post by VitalJavier »

Contacta con William, yo tengo un activex que el me paso y hasta la fecha funciona muy bien
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

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

Post 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
Last edited by Armando on Thu Jun 11, 2015 7:24 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

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

Post by karinha »

Code: Select all

#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
 
João Santos - São Paulo - Brasil
devtuxtla
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

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

Post 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
Visite Chiapas, el paraiso de México.
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

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

Post by karinha »

Que DLL? no tiens que registrar nada. Solo hay tener un proveedor de correo en tu FTP. salu2.
João Santos - São Paulo - Brasil
devtuxtla
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

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

Post 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
Visite Chiapas, el paraiso de México.
guapilescity
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am

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

Post by guapilescity »

karinha wrote:

Code: Select all

#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
 
Post Reply