Page 1 of 1

enviar una mail con una cuenta gmail

Posted: Wed Oct 16, 2013 4:14 pm
by fgondi
Como puedo enviar un email (Smtp) a través de una cuenta gmail

He probado con Hb_Sendmail pero genera un error

Code: Select all

Error BASE/1081  Operaci¢n no soportada: TIPCLIENTSMTP:new()
   Parameter   :
     [   1] = O   TIPCLIENTSMTP
     [   2] = C   smtps

Lista de la pila
----------------
    1    llamado por (b)ERRORSYS(255)
    2    llamado por TIPCLIENT:NEW(0)
    3    llamado por TIPCLIENTSMTP:NEW(0)
    4    llamado por HB_SENDMAIL(0)
Tengo incluidas las librerias: hbtip.lib hbssl.lib hbtipssl.lib libeay32.lib ssleay32.lib
y llamo a la función de la siguiente forma:
Hb_SendMail( "smtp.gmail.com", 465, "fernando@-----", "destino@------", NIL, NIL, 'HOLA', 'PRUEBA', NIL, "fernando@----", "contraseña", ;
'', NIL, NIL, .T., .F., NIL, NIL, NIL, .t. )

Re: enviar una mail con una cuenta gmail

Posted: Wed Oct 16, 2013 4:29 pm
by MGA
busca por CDOSYS no forum!

Re: enviar una mail con una cuenta gmail

Posted: Wed Oct 16, 2013 7:32 pm
by mastintin
yo uso esta funcion a diario:

Code: Select all


Function GMAILME (cDestino,cAsunto,cTexto,cAdjunto )
Local oEmailCfg,oEmailMsg,oError,cHtml

DEFAULT cAdjunto:=""
DEFAULT cAsunto := "envio de Text"
DEFAULT cTexto := ""

   if Empty(cDestino )
      msgAlert("no ha puesto un destinatario")
      Return .f.
   endif

  Mensaje("Enviando correo a "+ cDestino  )

cHtml:='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'
cHtml+='<HTML><HEAD>'
cHtml+='<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>'
cHtml+='<META name=GENERATOR content="MSHTML 8.00.6001.18783">'
cHtml+='<STYLE></STYLE>'
cHtml+='</HEAD>'
cHtml+='<BODY bgColor=#ffffff>'
cHtml+='<DIV><FONT size=2 face=Arial>'+cTexto +'</FONT></DIV></BODY></HTML>'

TRY
  oEmailCfg := CREATEOBJECT( "CDO.Configuration" )
  WITH OBJECT oEmailCfg:Fields
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := "smtp.gmail.com"
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := 465
     :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2   // Remote SMTP = 2, local = 1
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .T.
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := .T.
     :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := AllTrim(oApli:cMailServer)
     :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := AllTrim(oApli:cMailPass ) // Password
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 30
     :Update()
  END WITH
CATCH oError
  MsgInfo( "No se ha enviado el " + ";"  + ;
         "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + ;
         "SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + ;
         "OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + ;
         "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" + ;
         "Message: " + oError:Description )
END
oError:=NIL

TRY
    oEmailMsg := CREATEOBJECT ( "CDO.Message" )
    WITH OBJECT oEmailMsg
        :Configuration = oEmailCfg
        :From = chr(34)+"Mi Empresa S.L."+chr(34)+ "<yo@tu.es>"    // lo que quieras que aparezca en el mensaje
        :To = cDestino   
        :Subject = cAsunto
        :MDNRequested = .T.
        :TextBody = cTexto
       // :HTMLBody = cHtml
        if !Empty(cAdjunto)
           :AddAttachment(cAdjunto)
        endif
    END WITH
    oEmailMsg:Send()
CATCH oError
    MsgInfo("No se ha enviado el mensaje" + ";"  + CRLF+ ;
            "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + CRLF+;
            "SubC: "  + TRANSFORM(oError:SubCode, NIL) + ";" + CRLF+ ;
            "OSCode: "+ TRANSFORM(oError:OsCode, NIL) + ";" + CRLF +;
            "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" +CRLF+ ;
            "Message: " + oError:Description )
 END

 Mensaje()

 MsgInfo("Correo enviado correctamente")

Return .T.

 

Re: enviar una mail con una cuenta gmail

Posted: Thu Oct 17, 2013 6:23 am
by fgondi
Muchas gracias.
Ya probado cdo y funciona de maravilla.
Pasare a usarlo.

enviado desde tapatalk

Re: enviar una mail con una cuenta gmail

Posted: Wed Oct 23, 2013 12:00 pm
by TecniSoftware
mastintin wrote:yo uso esta funcion a diario:

Code: Select all


Function GMAILME (cDestino,cAsunto,cTexto,cAdjunto )
Local oEmailCfg,oEmailMsg,oError,cHtml

DEFAULT cAdjunto:=""
DEFAULT cAsunto := "envio de Text"
DEFAULT cTexto := ""

   if Empty(cDestino )
      msgAlert("no ha puesto un destinatario")
      Return .f.
   endif

  Mensaje("Enviando correo a "+ cDestino  )

cHtml:='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'
cHtml+='<HTML><HEAD>'
cHtml+='<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>'
cHtml+='<META name=GENERATOR content="MSHTML 8.00.6001.18783">'
cHtml+='<STYLE></STYLE>'
cHtml+='</HEAD>'
cHtml+='<BODY bgColor=#ffffff>'
cHtml+='<DIV><FONT size=2 face=Arial>'+cTexto +'</FONT></DIV></BODY></HTML>'

TRY
  oEmailCfg := CREATEOBJECT( "CDO.Configuration" )
  WITH OBJECT oEmailCfg:Fields
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := "smtp.gmail.com"
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := 465
     :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2   // Remote SMTP = 2, local = 1
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .T.
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := .T.
     :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := AllTrim(oApli:cMailServer)
     :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := AllTrim(oApli:cMailPass ) // Password
     :Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 30
     :Update()
  END WITH
CATCH oError
  MsgInfo( "No se ha enviado el " + ";"  + ;
         "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + ;
         "SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + ;
         "OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + ;
         "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" + ;
         "Message: " + oError:Description )
END
oError:=NIL

TRY
    oEmailMsg := CREATEOBJECT ( "CDO.Message" )
    WITH OBJECT oEmailMsg
        :Configuration = oEmailCfg
        :From = chr(34)+"Mi Empresa S.L."+chr(34)+ "<yo@tu.es>"    // lo que quieras que aparezca en el mensaje
        :To = cDestino   
        :Subject = cAsunto
        :MDNRequested = .T.
        :TextBody = cTexto
       // :HTMLBody = cHtml
        if !Empty(cAdjunto)
           :AddAttachment(cAdjunto)
        endif
    END WITH
    oEmailMsg:Send()
CATCH oError
    MsgInfo("No se ha enviado el mensaje" + ";"  + CRLF+ ;
            "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + CRLF+;
            "SubC: "  + TRANSFORM(oError:SubCode, NIL) + ";" + CRLF+ ;
            "OSCode: "+ TRANSFORM(oError:OsCode, NIL) + ";" + CRLF +;
            "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" +CRLF+ ;
            "Message: " + oError:Description )
 END

 Mensaje()

 MsgInfo("Correo enviado correctamente")

Return .T.

 

Tu ejemplo me funcionó perfecto, muchas gracias por compartirlo.

Lo he usado bajo windows 7 sin problemas, pero queria preguntarte: para enviar mails de esta manera, es necesario instalar algo? algunos de mis clientes aún tienen pc con windows xp, funciona bien en xp? deben instalar algo?
Una de la cosas que habitualmente tengo que hacer es enviar facturas en pdf a los clientes y son muchos mails. Calculas que se podria hacerlo sin problemas usando CDO ?

Muchos saludos

Re: enviar una mail con una cuenta gmail

Posted: Wed Oct 23, 2013 2:31 pm
by postinelli

Re: enviar una mail con una cuenta gmail

Posted: Wed Oct 23, 2013 2:35 pm
by mastintin
TecniSoftware wrote: para enviar mails de esta manera, es necesario instalar algo?
Yo creo que no hace falta instalar nada , cdo existe desde windows 2000 y supongo que xp lo lleve .

Re: enviar una mail con una cuenta gmail

Posted: Wed Oct 23, 2013 5:51 pm
by postinelli
probado en XP y funciona perfecto