Foros del Web » Programando para Internet » ASP Clásico »

Validacion de mail en ASP

Estas en el tema de Validacion de mail en ASP en el foro de ASP Clásico en Foros del Web. Hola tengo este script que me valida el mail lo que me ocurre es que si un usuario tiene un mail por ejemplo [email protected] me ...
  #1 (permalink)  
Antiguo 19/03/2007, 02:36
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Validacion de mail en ASP

Hola tengo este script que me valida el mail

lo que me ocurre es que si un usuario tiene un mail por ejemplo

[email protected] me da error de correo electronico
y no se que tengo que añadir para que me valide bien el correo

¿alguien me puede hechar una mano?

gracias de antemano


Código PHP:
<%
'Funcion que comprueba si un e-mail es valido. Devuelve:
-> si es nulo o esta vacio
' 1 -> Si el e-mail es incorrecto
-> Si el e-mail es valido
Function Validar_EMail(EMail)
Dim Con
If EMail "" Then
    Validar_EMail 
0
    
Exit Function
End If
EMail LCase(EMail)
If (
Left(EMail1) = "." Or Left(EMail1) = "@"Then
    Validar_EMail 
1
    
Exit Function
End If
If (
Right(EMail1) = "." Or Right(EMail1) = "_" Or _
    Right
(EMail1) = "@"Then
    Validar_EMail 
1
    
Exit Function
End If
Con 0
For 1 To Len(EMail)
    If (
Mid(EMaili1)) = "@" Then
       Con 
Con 1
    End 
If
Next
If Con Or Con 0 Then
    Validar_EMail 
1
    
Exit Function
End If
Con 0
For 1 To Len(EMail)
    If (
Mid(EMaili1)) = "@" Then
       
For i To Len(EMail)
          If (
Mid(EMailj1)) = "." Then
             Con 
Con 1
          End 
If
       
Next
    End 
If
Next
If Con 1 Then
    Validar_EMail 
1
    
Exit Function
End If
Con 0
For 1 To Len(EMail)
    If (
Mid(EMaili1) = ".") Or (Mid(EMaili1) = "@"Then
       
If (Mid(EMail11) = ".") Or (Mid(EMail11) = "@"Then
          Validar_EMail 
1
          
Exit Function
       
End If
    
End If
Next
For 1 To Len(EMail)
    If (
Mid(EMaili1) < "a" Or Mid(EMaili1) > "z") And _
       
(Mid(EMaili1) < "0" Or Mid(EMaili1) > "9") And _
       Mid
(EMaili1) <> "." And Mid(EMaili1) <> "_" And _
       Mid
(EMaili1) <> "@" Then
          Validar_EMail 
1
          
Exit Function
    
End If
Next
Validar_EMail 
2
End 
Function
%> 
  #2 (permalink)  
Antiguo 19/03/2007, 07:55
Avatar de richard20  
Fecha de Ingreso: marzo-2006
Mensajes: 139
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Validacion de mail en ASP

Estimado Prueba con esta función que ocupo es mucho mas detallada y el mail que tu escribiste lo da como válido.
Código:
Function ValidaMail(email) 
'Funcion que comprueba si un e-mail es valido. Devuelve:
' 0 -> si es nulo o esta vacio
' 1 -> Si el e-mail es incorrecto
' 2 -> Si el e-mail es valido

    If(email)="" Then
        ValidaMail=0
        exit function 
   End if
dim partes, parte, i, c 
    'rompo el email en dos partes, antes y después de la arroba 
    partes = Split(email, "@") 
    if UBound(partes) <> 1 then 
       'si el mayor indice del array es distinto de 1 es que no he obtenido las dos partes 
       ValidaMail = 1
       exit function 
    end if 
    'para cada parte, compruebo varias cosas 
    for each parte in partes 
       'Compruebo que tiene algún caracter 
       if Len(parte) <= 0 then 
          ValidaMail = 1
          exit function 
       end if 
       'para cada caracter de la parte 
       for i = 1 to Len(parte) 
          'tomo el caracter actual 
          c = Lcase(Mid(parte, i, 1)) 
          'miro a ver si ese caracter es uno de los permitidos 
          if InStr("._-abcdefghijklmnopqrstuvwxyz", c) <= 0 and not IsNumeric(c) then 
             ValidaMail = 1 
             exit function 
          end if 
       next 
       'si la parte actual acaba o empieza en punto la dirección no es válida 
       if Left(parte, 1) = "." or Right(parte, 1) = "." then 
          ValidaMail = 1 
          exit function 
       end if 
    next 
    'si en la segunda parte del email no tenemos un punto es que va mal 
    if InStr(partes(1), ".") <= 0 then 
       ValidaMail = 1 
       exit function 
    end if 
    'calculo cuantos caracteres hay después del último punto de la segunda parte del mail 
    i = Len(partes(1)) - InStrRev(partes(1), ".") 
    'si el número de caracteres es distinto de 2 y 3 
    if not (i = 2 or i = 3) then 
       ValidaMail = 1 
       exit function 
    end if 
    'si encuentro dos puntos seguidos tampoco va bien 
    if InStr(email, "..") > 0 then 
       ValidaMail=0
       exit function 
    end if 
    ValidaMail = 2
End Function
Espero te sirva,
Saludos.
__________________
-.No Sueñes tu Vida, Vive tus Sueños.-
  #3 (permalink)  
Antiguo 20/03/2007, 06:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: Validacion de mail en ASP

Tambien lo puedes hacer con un automata

Código:
 estados (inic:0 - finales: 6, 7 y 8)

' La función devolverá:

' vbEMailNulo = 0 - si es nulo o esta vacio

' vbEMailNoOK = 1 - Si el e-mail es incorrecto

' vbEMailOK = 2 - Si el e-mail es valido

Const vbEMailNulo = 0

Const vbEMailNoOK = 1

Const vbEMailOK = 2

Function ValidarEMAIL(EMAIL)

Dim Indice

Dim Caracter

Dim Largo

Dim Estado


ValidarEMAIL = vbEMailNulo ' Inicialmente lo suponemos vacío


If EMAIL <> "" Then

Largo = Len(EMAIL)

Estado = 0 ' Estado inicial del autómata


For Indice = 1 To Largo ' Comenzamos a recorrer la cadena

Caracter = Mid(EMAIL, Indice, 1) ' Vamos tomando carácter a carácter


' Con lo que sigue comprobamos si el caracter está

' en el rango A-Z , a-z , 0-9 (caracter aceptable tipo A - Alfanumerico)


If (Caracter>="a" AND Caracter<="z") OR _ 

(Caracter>="A" AND Caracter<="Z") OR _

(Caracter>="0" AND Caracter<="9") Then

Caracter = "A"

End If


' Con lo que sigue comprobamos si el caracter es

' _ ó - (caracter aceptable tipo - : Guion alto o bajo)


If Caracter = "-" Or Caracter = "_" Then 

Caracter = "-"

End If


Select Case Caracter

Case "A": ' Es un caracter aceptable tipo A

Select Case Estado 

Case 0:

Estado = 1 ' Era el primer caracter del EMAIL: pasamos a estado 1

Case 1:

Estado = 1 ' Caracter intermedio ..x.. antes de arroba. Seguimos en 1

Case 2:

Estado = 3 ' Caracter después de arroba. Pasamos a estado 3

Case 3:

Estado = 3 ' Caracter en dominio. Seguimos en estado 3

Case 4:

Estado = 5 ' 1er caracter en extension de dominio/subdominio. Pasamos a estado 5

Case 5:

Estado = 6 ' 2º caracter en extension de dominio/subdominio. Pasamos a estado 6 

Case 6:

Estado = 7 ' 3er caracter en extension de dominio/sudominio. Pasamos a estado 7

Case 7:

Estado = 8 ' 4º caracter en extension de dominio/subdominio. Pasamos a estado 8

Case 8:

ValidarEMAIL = vbEMailNoOK ' La longitud de la extensión .XXXX mayor que 4 caracteres

Exit Function ' Estado de error

End Select

Case "-": ' Es un caracter aceptable tipo "-" 

Select Case Estado 

Case 1:

Estado = 1 ' Caracter intermedio ..-.. antes de arroba. Seguimos en 1

Case 3:

Estado = 3 ' Caracter en dominio. Seguimos en estado 3

Case Else:

ValidarEMAIL = vbEMailNoOK ' 

Exit Function ' Estado de error

End Select 


Case "." : '-----> Encuentra un punto

Select Case Estado

Case 1: ' Como lo anterior eran caracteres y puntos

Estado = 0 ' pasamos a estado inicial (espera un caracter)

Case 3: ' Lo anterior era una arroba y texto

Estado = 4 ' Pasamos a estado 4 (extension .com, .net, .shop, .info ...)

Case 6: ' Estaba en una extensión de dos letras como .ac y encontramos otro punto, para ir a algo como .ac.cr

Estado = 4 ' Pasamos a estado 4 (para esperar otra extensión)

Case 7: ' Estaba en una extensión de tres letras como .ucr y encontramos otro punto, para ir a algo como .ucr.ac.cr

Estado = 4 ' Pasamos a estado 4 (para esperar otra extensión)

Case 8: ' Estaba en una extensión de cuatro letras como .info y encontramos otro punto, para ir a algo como .info.cr

Estado = 4 ' Pasamos a estado 4 (para esperar otra extensión).

Case Else: ' Encontró un punto después de la arroba o al comienzo de la cadena

ValidarEMAIL = vbEMailNoOK ' o antes de la arroba

Exit Function ' Estado de error

End Select


Case "@": '-----> Encuentra una arroba

Select Case Estado

Case 1: ' Si lo anterior eran caracteres y puntos,

Estado = 2 ' pasamos a estado 2

Case Else: ' Si lo anterior era algo distinto
ValidarEMAIL = vbEMailNoOK ' Estado de error
Exit Function
End Select

' -----> Encuentra un caracter "raro"

Case Else: ' Caracter inaceptable para email. Ej: * : !

ValidarEMAIL = vbEMailNoOK ' Estado de error

Exit Function
End Select


Next ' -----> Fin de comprobación de cadena


If (Estado = 6) or (Estado = 7) or (Estado = 8) Then ' El autómata terminó en un estado final
ValidarEMAIL = vbEMailOK ' Estado final: email correcto
Else
ValidarEMail = vbEMailNoOK ' No era un estado final: email incorrecto
End If
End If 
End Function
Implantación

Código:
Validaremail(mail) = 0, 1 ó 2
Suerte,
  #4 (permalink)  
Antiguo 20/03/2007, 16:49
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Validacion de mail en ASP

Una expresión regular haría el trabajo muchísimo más facil.

http://www.4guysfromrolla.com/webtech/052899-1.shtml

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 21/03/2007, 10:04
 
Fecha de Ingreso: enero-2007
Mensajes: 68
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Validacion de mail en ASP

Cita:
Iniciado por u_goldman Ver Mensaje
Una expresión regular haría el trabajo muchísimo más facil.

http://www.4guysfromrolla.com/webtech/052899-1.shtml

Saludos
Excelente sugerencia, lo probé y funciona a la perfección y no es tan complicado además pocas líneas de comandos.

Saludos,
  #6 (permalink)  
Antiguo 23/03/2007, 02:27
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Validacion de mail en ASP

Hola, me gustaría saber si alguna de las soluciones son válidas para programar en ASP pero con JavaScript, gracias.
  #7 (permalink)  
Antiguo 23/03/2007, 07:32
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: Validacion de mail en ASP

hechale un vistazo al link de u_goldman
  #8 (permalink)  
Antiguo 23/03/2007, 10:55
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Validacion de mail en ASP

Cita:
Iniciado por Shilfild Ver Mensaje
Hola, me gustaría saber si alguna de las soluciones son válidas para programar en ASP pero con JavaScript, gracias.
Las expresiones regulares son válidas tanto server side como client side. Habrán dos o tres cosas que cambien, pero la idea es la misma.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:16.