problemas al enviar correo en vfp

861 views
Skip to first unread message

David Nubes

unread,
May 6, 2009, 6:15:39 PM5/6/09
to mundovis...@googlegroups.com

He puesto en mi aplicación un botón que tiene lo siguiente en metodo CLICK

omail=CREATEOBJECT("jmail.SMTPmail")
oMail.ServerAddress = "mail.imp.com" && Servidor de Correo
oMail.Sender = "con...@imp.com" && cuenta de quien envia el mail
oMail.SenderName = "David Nubes" && Nombre de quien envía el mail
oMail.AddRecipient("davi...@yahoo.com.mx") && Destinatario del email
oMail.HtmlBody = "Cuerpo del email que puede estar en un campo memo" && Cuerpo del Mensaje en HTML

nRet = oMail.Execute()
If !nRet
=Messagebox(Transform(oMail.errorCode))
endif

Según la ayuda que me mandaron esto debería enviar un correo. Utilizo VFP6, windows xp, ya descargue el jMail free y lo instalé en mi máquina y al dar el click me marca el siguiente error:

OLE IDispath exception code 0 from jmail.smtpmail: the message was undeliverable. All servers failed to recive the message...

Qué estoy haciendo mal?

Saludos y agradezco de antemano su ayuda.
David.

¡Obtén la mejor experiencia en la web! Descarga gratis el nuevo Internet Explorer 8. http://downloads.yahoo.com/ieak8/?l=mx

Henry Gutierrez Sanchez

unread,
May 6, 2009, 6:34:28 PM5/6/09
to mundovis...@googlegroups.com
Hola David:

Con la ayuda de una persona del foro (TRINY), me envio un codigo y lo modifique
de acuerdo a mi aplicacion y en el boton de envio quedo asi y funciona sin problemas.


********************************
wcorreo='web.sian'
wclave='XXXXXX'
wcorreo=ALLTRIM(wcorreo)+"@gmail.com"
wclave=ALLTRIM(wclave)
wdestino='notasfomeque'
wdestino=ALLTRIM(wdestino)+"@gmail.com"
TRY
  LOCAL lcSchema, loConfig, loMsg, loError, lcErr,lcFile
  lcErr = ""
  lcSchema = "http://schemas.microsoft.com/cdo/configuration/"
  loConfig = CREATEOBJECT("CDO.Configuration")
  WITH loConfig.FIELDS
    .ITEM(lcSchema + "smtpserver") = "smtp.gmail.com"
    .ITEM(lcSchema + "smtpserverport") = 465 && 465 && ó 587
    .ITEM(lcSchema + "sendusing") = 2
    .ITEM(lcSchema + "smtpauthenticate") = .T.
    .ITEM(lcSchema + "smtpusessl") = .T.
    .ITEM(lcSchema + "sendusername") = wcorreo && Correo de envio
    .ITEM(lcSchema + "sendpassword") = wclave  && Clave de tu correo
    .UPDATE
  ENDWITH
  ***************** aparezca el nombre completo del remitente
*    .From = "henry gutierrez <hegu...@gmail.com>"
*    .To = "Badsy <web....@mail.com>, Usuario Dos <us...@mail.com>"
  *****************
  loMsg = CREATEOBJECT ("CDO.Message")
  WITH loMsg
    .Configuration = loConfig
    .FROM = wcorreo
    .TO = wdestino  && aqui cambias al correo destino
    .Subject = "Docente: "+wdocente
    .TextBody = wnotas
    *-- Archivo adjunto
    lcFile = GETFILE('zip')
    IF NOT EMPTY(lcFile)
      .AddAttachment(lcFile)
    ENDIF
    .Send()
  ENDWITH
CATCH TO loError
  lcErr = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;
    [Linea: ] + STR(loError.LINENO) + CHR(13) + ;
    [Mensaje: ] + loError.MESSAGE
FINALLY
  RELEASE loConfig, loMsg
  STORE .NULL. TO loConfig, loMsg
  IF EMPTY(lcErr)
    MESSAGEBOX("Archivo de Notas Enviado con éxito", 64, "Aviso")
  ELSE
    MESSAGEBOX(lcErr, 16 , "Error")
  ENDIF
ENDTRY
***********************
CLEAR
CLOSE DATABASES
Thisform.Release

Atentamente
henry

   

David Nubes

unread,
May 7, 2009, 11:58:47 AM5/7/09
to mundovis...@googlegroups.com

Acabo de insertar el código que me has enviado en el click de un botón. Y me marca el mismo error que con el código que yo usaba. Ahora tengo algunas dudas. Sabiendo que tu código si funciona para ti, me pregunto, No necesito instalar algún ActiveX o DLL en mi máquina, (usando CDO) ?
Utilizo XP y vfp9.

Saludos,
David

--- El mié 6-may-09, Henry Gutierrez Sanchez <hegu...@gmail.com> escribió:

Henry Gutierrez Sanchez

unread,
May 7, 2009, 12:18:23 PM5/7/09
to mundovis...@googlegroups.com
David Buenos Dias

Acabo de leer tu mensaje, no entiendo porque te sale el error si usas vfp9.0, mi maquina tiene instalado windows xp sp3,
pero los docentes que lo usan lo usan en windows xp, vista y ha funcionado sin problemas, si te parece me puedes
enviar tu codigo y mi correo para mirarlo y ayudarte si puedo.

correo: hegu...@gmail.com

simonxp

unread,
May 10, 2009, 8:05:49 PM5/10/09
to Mundo Visual FoxPro
Hola amigos:
El codigo de Henry me funciona, hice la prueba como mi correo que
esta en Gmail, sin embargo pregunto, este codigo sirve para el Hotmail
y el Yahoo.
Atte. Simon
> correo: hegus...@gmail.com

Henry Gutierrez Sanchez

unread,
May 10, 2009, 10:17:53 PM5/10/09
to mundovis...@googlegroups.com
Simon buenas noches:

Yo tuve ese mismo problema pero lo resolvi con un formulario de pregunta al usuario
que cuando va ha enviar el correo y/o archivos le pregunto si tiene cuenta en gmail, en caso
negativo entonces solamente le pregunto el nombre y mensaje y utilizo una cuenta que habri para el uso cuando los
usuarios no tienen cuenta en gmail.

Asi lo solucione, y no tengo problema,
pero si es necesario el uso de otros servidores de correo seria
colocarle los puertos que maneja cada servidor de correo.


atentamente
henry

Roberto Lemos

unread,
Jul 11, 2009, 12:14:00 PM7/11/09
to mundovis...@googlegroups.com

----- Original Message -----
From: "David Nubes" <davi...@yahoo.com.mx>
To: <mundovis...@googlegroups.com>
Sent: Wednesday, May 06, 2009 5:15 PM
Subject: [Mundo Visual FoxPro] problemas al enviar correo en vfp


He puesto en mi aplicaci�n un bot�n que tiene lo siguiente en metodo CLICK

omail=CREATEOBJECT("jmail.SMTPmail")
oMail.ServerAddress = "mail.imp.com" && Servidor de Correo
oMail.Sender = "con...@imp.com" && cuenta de quien envia el
mail

oMail.SenderName = "David Nubes" && Nombre de quien env�a el

mail
oMail.AddRecipient("davi...@yahoo.com.mx") && Destinatario del email
oMail.HtmlBody = "Cuerpo del email que puede estar en un campo memo" &&
Cuerpo del Mensaje en HTML

nRet = oMail.Execute()
If !nRet
=Messagebox(Transform(oMail.errorCode))
endif

Seg�n la ayuda que me mandaron esto deber�a enviar un correo. Utilizo VFP6,
windows xp, ya descargue el jMail free y lo instal� en mi m�quina y al dar

el click me marca el siguiente error:

OLE IDispath exception code 0 from jmail.smtpmail: the message was
undeliverable. All servers failed to recive the message...

Qu� estoy haciendo mal?

Saludos y agradezco de antemano su ayuda.
David.

�Obt�n la mejor experiencia en la web! Descarga gratis el nuevo

--~--~---------~--~----~------------~-------~--~----~
_______________________________________________________________
Has recibido este mensaje porque est�s suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripci�n a este grupo, env�a un mensaje a:
mundovisualfox...@googlegroups.com
-~----------~----~----~----~------~----~------~--~---


__________ Informaci�n de ESET Smart Security, versi�n de la base de firmas
de virus 4052 (20090504) __________

ESET Smart Security ha comprobado este mensaje.

http://www.eset.com


__________ Informaci�n de ESET NOD32 Antivirus, versi�n de la base de firmas
de virus 4234 (20090711) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com


__________ Informaci�n de ESET NOD32 Antivirus, versi�n de la base de firmas de virus 4234 (20090711) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com


__________ Informaci�n de ESET NOD32 Antivirus, versi�n de la base de firmas de virus 4720 (20091227) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

Daniel Sánchez

unread,
Aug 14, 2010, 8:08:33 PM8/14/10
to mundovis...@googlegroups.com
Te aconsejo usar CDO del mismo windows no tendras problemas, este método lo saque de portalfox, si buscas ahí lo encontrarás con toda la información necesaria, de paso te mando el código que yo utilizo con éxito. 

TRY
  LOCAL lcSchema, loConfig, loMsg, loError, lcErr
  lcErr = ""
  loConfig = CREATEOBJECT("CDO.Configuration")
  WITH loConfig.FIELDS
    .ITEM(lcSchema + "smtpserver") = ALLTRIM(mail.smtp) &&"smtp.live.com" si manejas una cuenta de outlook todos los parametros solicitados los puedes obtener de la configuración de tu cuenta que esta ahi registrada
    .ITEM(lcSchema + "smtpserverport") = STR(mail.puertosmtp,5,0) &&25
    .ITEM(lcSchema + "sendusing") =  2
    .ITEM(lcSchema + "smtpauthenticate") = mail.autenticacion && .T. 
    .ITEM(lcSchema + "smtpusessl") = mail.cifrado && .T.
    .ITEM(lcSchema + "sendusername") = mail.email && "mius...@hotmail.com"
    .ITEM(lcSchema + "sendpassword") = cpassword && "micontrasenia"
    .Item(lcSchema + "smtpconnectiontimeout") = 60 && Assign timeout in 
   .UPDATE
  ENDWITH
      
  loMsg = CREATEOBJECT ("CDO.Message")
  WITH loMsg
    .Configuration = loConfig
    .FROM = ALLTRIM(mail.nombrecuenta)+" <"+ALLTRIM(mail.email)+">" &&"Usuario Hotmail <mius...@hotmail.com>"
    .TO = ALLTRIM(thisform.cmail.Value) &&"usu...@gmail.com"
    IF !EMPTY(thisform.ccopia.Value)
     .bcc=thisform.ccopia.Value                &&su utilizas el campo con copia aquí van esos correos
    ENDIF 
    .Subject =thisform.casunto.Value && el asunto de tu correo
    .HTMLBody =thisform.rtfcontrols1.RTF_HTML()   && Envio de texto html
*    .TextBody =thisform.olecontrol1.text          && si no tienes texto html puedes enviar texto común usando esta propiedad
     */vemos si tenemos adjuntos para enviar
FOR sIatt = 1 TO thisform.list1.ListCount 
.AddAttachment(thisform.list1.List(sIatt))   &&en mi caso tengo el nombre del archivo con su ruta en un list
ENDFOR
    .Send()           && envia el correo
  ENDWITH
CATCH TO loError
  lcErr = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;
    [Linea: ] + STR(loError.LINENO) + CHR(13) + ;
    [Mensaje: ] + loError.MESSAGE
FINALLY
  RELEASE loConfig, loMsg
  STORE .NULL. TO loConfig, loMsg
  IF EMPTY(lcErr)
    MESSAGEBOX("El mensaje se envió con éxito", 64, "Aviso")
  ELSE
    MESSAGEBOX(lcErr, 16 , "Error")
  ENDIF
ENDTRY

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil 044-949398047
Trujillo - Perú
Reply all
Reply to author
Forward
0 new messages