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