como validar dirección de correos desde VFP

4,044 views
Skip to first unread message

Euro Nava

unread,
Jan 24, 2012, 2:51:17 PM1/24/12
to Comunidad de Visual Foxpro en Español
Amigos, tengo un formulario y en el textbox se almacena un email
¿existe alguna manera de que mi formulario valide si la dirección de
correos incluida existe antes de grabar el registro?

ricardo peña

unread,
Jan 24, 2012, 8:16:05 PM1/24/12
to GRUPO-VFP GRUPO-VFP
Consulta en portalfox que Luis María dejó una rutina para eso.

Ricardo Luis Peña
Analista de Sistemas
BA - Argentina
011-15-4440-7378
 
> Date: Tue, 24 Jan 2012 11:51:17 -0800
> Subject: [vfp] como validar dirección de correos desde VFP
> From: eur...@gmail.com
> To: publice...@googlegroups.com

J. Enrique Ramos Menchaca

unread,
Jan 24, 2012, 11:18:30 PM1/24/12
to Comunidad de Visual Foxpro en Español

Euro J. Nava L.

unread,
Jan 26, 2012, 11:52:21 AM1/26/12
to publice...@googlegroups.com
Gracias lo probare


Saludos

El presente correo y sus anexos son exclusivamente para el uso de los
destinatarios indicados en el encabezado del mismo, pueden contener
información confidencial y/o privilegiada. Si usted por error ha recibido la
presente correspondencia agradezco hacer del conocimiento por esta misma
vía.

Bendito el hombre que ha sido llamado por Cristo para ser soldado del
ejercito en cuya mano empuñe como arma la palabra de Jehová


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de J. Enrique Ramos
Menchaca
Enviado el: Martes, 24 de Enero de 2012 11:49 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: como validar dirección de correos desde VFP


Espero te sirva
http://www.portalfox.com/index.php?name=News&file=article&sid=704&theme=Prin
ter

Euro J. Nava L.

unread,
Jan 26, 2012, 12:07:20 PM1/26/12
to publice...@googlegroups.com
Lo coloque en el evento VALID del textbox y luego en evento clic de un botón
y en ambos me arroja el siguiente error:

"Los métodos y eventos no pueden contener procedimientos o definiciones de
clases anidadas"


Saludos

El presente correo y sus anexos son exclusivamente para el uso de los
destinatarios indicados en el encabezado del mismo, pueden contener
información confidencial y/o privilegiada. Si usted por error ha recibido la
presente correspondencia agradezco hacer del conocimiento por esta misma
vía.

Bendito el hombre que ha sido llamado por Cristo para ser soldado del
ejercito en cuya mano empuñe como arma la palabra de Jehová


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de J. Enrique Ramos
Menchaca
Enviado el: Martes, 24 de Enero de 2012 11:49 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: como validar dirección de correos desde VFP

On 24 ene, 19:16, ricardo peña <r...@hotmail.com> wrote:

Mik

unread,
Jan 26, 2012, 12:18:01 PM1/26/12
to publice...@googlegroups.com
Por ahi encontré esta funcion, que modifiqué un poco y me sirve para validar direcciones de correo. Retorna .T. si la direccion cumple con el formato de una direccion email. De lo contrario, devuelve .F..

Espero te sirva.

***********
LPARAMETERS email as String
IF VARTYPE(email) # "C"
RETURN .F.
ENDIF
*
loRegExp = CreateObject("VBScript.RegExp")
loRegExp.IgnoreCase = .T.
loRegExp.Pattern =  '^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)­*)\.([A-Za-z]{2,})$'
m.valid = loRegExp.Test(ALLTRIM(m.email))
RELEASE loRegExp
RETURN m.valid

***********

Saludos

Miguel Herbias
Lima-Peru

Euro J. Nava L.

unread,
Jan 26, 2012, 12:33:00 PM1/26/12
to publice...@googlegroups.com

Gracias Miguel la probare a ver que tal

 

 

Saludos

 

 

 

El presente correo y sus anexos son exclusivamente para el uso de los destinatarios indicados en el encabezado del mismo, pueden contener información confidencial y/o privilegiada. Si usted por error ha recibido la presente correspondencia agradezco hacer del conocimiento por esta misma vía.

 

Bendito el hombre que ha sido llamado por Cristo para ser soldado del ejercito en cuya mano empuñe como arma la palabra de Jehová

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Mik
Enviado el: Jueves, 26 de Enero de 2012 12:48 p.m.
Para: publice...@googlegroups.com
Asunto: [vfp] Re: como validar dirección de correos desde VFP

 

Por ahi encontré esta funcion, que modifiqué un poco y me sirve para validar direcciones de correo. Retorna .T. si la direccion cumple con el formato de una direccion email. De lo contrario, devuelve .F..

Irlandes 1960

unread,
Jan 27, 2012, 8:43:57 AM1/27/12
to publice...@googlegroups.com
Para validar la estructura de la direccion podes usar en el evento valid del texbox la siguiente clausula
IF EMPTY(this.Value)
RETURN
ENDIF
LNPOS1 = ATC('@',this.Value)
IF  LNPOS1 =0
MESSAGEBOX('una direccion de correo debe contener @ en algun lado',16,'LA DIRECCION NO ES VÁLIDA')
RETURN
ENDIF
LNPOS2 = ATC('.',this.Value)
IF LNPOS2 < LNPOS1
MESSAGEBOX('una direccion de correo debe indicar el dominio separado con un punto',16,'LA DIRECCION NO ES VÁLIDA')
RETURN
ENDIF
Pero esto no garantiza que la dirección sea válida, solo su estructura. Igualmente no le bloqueo al usuario que la ingrese así, ya que uno nunca sabe si no me van a cambiar las reglas del juego en los correos.
Habrá que mirar el artículo que dice J.Enriquez.
Pero no creo que sea factible, si ni siquiera el Outlook te lo puede garantizar, y está especialmente hecho para eso.

jmatheus

unread,
Aug 17, 2012, 9:26:50 PM8/17/12
to publice...@googlegroups.com
Muchas gracias, funcion muy bien, lo que no entiendo es como compara todos los caracteres pero funciona

integral

unread,
Aug 17, 2012, 11:07:16 PM8/17/12
to publice...@googlegroups.com
 
Amigo Euro Nava :
 
A continuacion copio el codigo que vengo empleando para la validacion de los e-mails...
 

e_mail=Thisform.txtEmail.Value 

var_mail=Alltrim(e_mail)

char_num=Len(var_mail)

 

* First check for any invalid character

For i = 1 To char_num

 IF chkAccChars(Substr(var_mail, i, 1))=.F. and chkAlfaN(Substr(var_mail, i, 1))=.F.

   WAIT WINDOW "Carácter no válido en el correo electrónico." TIMEOUT 1

   RETURN 0

 Endif

Endfor

 

* Check if @ and . are present in the IDs

IF Occurs('@', var_mail) = 0 or Occurs('.', var_mail) = 0

  WAIT WINDOW "El @ y el Punto deben estar presentes en el correo electrónico de identificación." TIMEOUT 1

  RETURN 0

Endif

 

* There should be only one @

IF Occurs('@', var_mail) > 1

  WAIT WINDOW "No más de un @ se permite!" TIMEOUT 1

  RETURN 0

Endif

 

* Compruebe si son caracteres no válidos al comienzo o al final de la ID de correo

IF chkAlfaN(Substr(var_mail, 1, 1))=.F. .OR. chkAlfaN(Substr(var_mail, char_num, 1))=.F.

  WAIT WINDOW "Carácter no válido al comienzo o al final de la ID de correo." TIMEOUT 1

  RETURN 0

Endif

 

* Obtiene la posición @, El @ debería normalmente antes.

atPosGlobal = AT( '@',var_mail, 1)

IF chkAlfaN(Substr(var_mail, atPosGlobal - 1, 1))=.F. .OR. chkAlfaN(Substr(var_mail, atPosGlobal + 1, 1))=.F.

  WAIT WINDOW "El @ se coloca antes o después de un carácter no válido." TIMEOUT 1

  RETURN 0

Endif

 

* Now ensure that the . doesn't repeat itself in sequence

* eg> ..(this is wrong) .com(this is right)

IF Occurs('..', var_mail) > 0

  WAIT WINDOW "No se puede tener Dos Puntos colocados en secuencia continua." TIMEOUT 1

  RETURN 0

Endif

 

* The email is structurely right if it has reached so far next check if the "." lies within the last 4 chars

 

For i = 1 To char_num

 IF Substr(var_mail, char_num - (i - 1), 1) = "."

  IF i > 4

    WAIT WINDOW "La cantidad de caracteres de la frase, después del último Punto es incorrecto." TIMEOUT 1

    RETURN 0

  Endif

  Exit

 Endif

Endfor

 
Espero te sea de utilidad...
 
atte.,
 
Gabriel
(Lima-Perú)

Patricio Muñoz

unread,
Oct 23, 2013, 1:50:49 PM10/23/13
to publice...@googlegroups.com
Hola

Este es un codigo muy antiguo pero eficionete y rapido de programar para validar correo, creo que esta en portalfox y en davphantom

aqui va:

? ValidEMail("webm...@hotmail.com")

PROCEDURE ValidEMail(tcEmail)
  LOCAL oRE
  tcEmail = ALLTRIM(tcEmail)
  oRE = CREATEOBJECT("VBScript.RegExp")
  oRE.PATTERN = "^([a-zA-Z...@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
  RETURN oRE.Test(tcEmail)
ENDPROC

Bendiciones



El 23 de octubre de 2013 13:08, Federico Losco <fed...@gmail.com> escribió:
Hola Gabriel, llegue a tu código buscando como poder validar una direccion de e-mails, lo unico que no entiendo son las funciones "chkAccChars" "chkAlfaN" son de alguna clase especial? Porque da error al correr el código. Desde ya muchas gracias.
Saludos.

Federico
Concordia, Argentina.



--
Patricio Muñoz
Pro&Tech
Analista en Sistemas

Federico Losco

unread,
Oct 23, 2013, 2:11:23 PM10/23/13
to publice...@googlegroups.com
Muchas gracias Patricio, probé el procedimiento, pero me da un error en el return. Que podrá ser? Dice algo como código de error ole ....Codigo de estado COM desconocido.
Tengo que cargar alugna clase en especial?
Saludos

Federico L. Losco
Lic. en Sistemas
0345-155202486

Patricio Muñoz

unread,
Oct 23, 2013, 2:47:25 PM10/23/13
to publice...@googlegroups.com
que version de vfp usas porque funciona con vfp 6 en adelante... bueno... las versiones con las que yo la he usado

Bendiciones

Patricio Muñoz

unread,
Oct 23, 2013, 2:58:29 PM10/23/13
to publice...@googlegroups.com
disculpa...
el PATTERN te lo mande  mal...

aqui va el correcto:

PATTERN = "^[A-Za-z0-9](([_.-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([.-]?[a-zA-Z0-9]+)*).([A-Za-z]{2,})$"

Bendiciones

Federico Losco

unread,
Oct 23, 2013, 3:06:25 PM10/23/13
to publice...@googlegroups.com
Ahora si funciono, muchas gracias Patricio.
Vos los pones en el valid del text box?
Saludos

Federico L. Losco
Lic. en Sistemas
0345-155202486


Ariel D'Alfeo

unread,
Oct 23, 2013, 3:30:45 PM10/23/13
to publice...@googlegroups.com
Matanga dijo la changa! me la llevo!

gracias por el aporte!


-- 
Ariel D'Alfeo
Córdoba, Argentina

Jairo Miranda

unread,
Oct 23, 2013, 4:56:35 PM10/23/13
to publice...@googlegroups.com

Casualmente  estaba en la realización de un programa  que captura los emails de los clientes  de la empresa, ya que estoy trabajando con el foxypreviewer para enviar  los email de las cuentas de cobro a desde la lista de correos de los clientes, pero muchas veces se equivocan al copiarlos,  y esto  seguro genera error y el correo se pierde.

 

Si alguien conoce una rutina para enviarlos por foxpreviewer sin abrir la presentación preliminar, seria  perfecto.  

Nota: para que funcione con el Outlook debe ser MAPI ALTERNATIVE.

 

JM

Antonio Meza

unread,
Jan 24, 2012, 5:00:21 PM1/24/12
to publice...@googlegroups.com
Hola!!
 
Tanto como existir la cuenta no creo, pero lo que si puedes hacer es verificar que sea una direccion de correo valida, para ello debes crear una rutina que primero verifique el usuario de la cuenta o nombre del correo, luego contenga la @ y por ultimo un dominio valido, que tampoco sabras si existe, aunque seria mas facil de saber si un dominio existe por medio de un ping, no tengo un rutina para ello pero si tengo varias partes donde le solicito al usuario una direccion de correo, si encuentras una me las pasa jejeje
 
ejemplo
 
cuenta @ dominio.com
 
saludos

Federico Losco

unread,
Oct 23, 2013, 1:08:52 PM10/23/13
to publice...@googlegroups.com
Hola Gabriel, llegue a tu código buscando como poder validar una direccion de e-mails, lo unico que no entiendo son las funciones "chkAccChars" "chkAlfaN" son de alguna clase especial? Porque da error al correr el código. Desde ya muchas gracias.
Saludos.

Federico
Concordia, Argentina.

El sábado, 18 de agosto de 2012 00:07:16 UTC-3, integral escribió:

Pablo Pinedo

unread,
Jul 1, 2020, 3:26:12 PM7/1/20
to Comunidad de Visual Foxpro en Español
Se que tiene muchos años este post pero nunca es malo programar una solucion por mas que pasen los años
Creditos : Pablo Pinedo - Lima Perú

Programa Principal
IF buscacaracter(thisform.otext16.value,'@') = .f.
    mbox(4,'Debe Validar el Correo Electronico @')
    thisform.otext16.Value = ''
    RETURN .f.
  ELSE
    IF buscacaracter(thisform.otext16.value,'.') = .f.
        mbox(4,'Debe Validar el Correo Electronico .')
        thisform.otext16.Value = ''
        RETURN .f.
    ENDIF
ENDIF    

*------------------------------

FUNCTION buscacaracter(cadena,caracter)
LOCAL lbResultado
lbResultado = .f.
*Funcion sensitiva a Mayusculas y Minusculas
IF VARTYPE(Cadena) = 'N'
    lcCadena=STR(cadena)
  ELSE
      lcCadena = cadena
ENDIF
IF VARTYPE(Caracter) = 'N'
    lcCaracter=STR(caracter)
  ELSE
    lcCaracter=caracter
ENDIF
lcCadena = ALLTRIM(lcCadena)
lcCaracter = ALLTRIM(lcCaracter)

lnTamaño = LEN(lcCadena)
FOR i = 1 TO lnTamaño
    IF SUBSTR(lcCadena,i,lnTamaño)=ALLTRIM(lcCaracter)
        lbResultado = .t.
    ENDIF
NEXT
RETURN lbResultado
Reply all
Reply to author
Forward
0 new messages