Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/03/2007, 07:55
Avatar de richard20
richard20
 
Fecha de Ingreso: marzo-2006
Mensajes: 139
Antigüedad: 19 años, 1 mes
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.-