Creamos una función, en VBScript para páginas ASP, que comprueba si un email dado está escrito correctamente o no.
Vamos a revisar un script en ASP, escrito con el lenguaje de programación VBScript, para comprobar que un correo electrónico está escrito correctamente. Esta comprobación no sirve para saber si el correo electrónico existe o no, sino que nos puede informar si el correo está bien construido sintácticamente (es decir, tiene la arroba "@", una terminación de dominio, puntos donde deben ir puntos, etc.).
Este script está basado en un función que recibe el string que contiene el email que se pretende validar. La función realiza una serie de comprobaciones y devuelve false en caso de que no esté bien escrito el email o true en caso de que la dirección de correo sea correcta (desde el punto de vista de la escritura, recordamos que no mira a ver si el mail existe o no)
Las comprobaciones que hace son las siguientes, listadas en el mismo orden en el que aparece en el script:
- Rompe el email en dos partes, utilizando como separador la arroba. Si se ha roto en menos de dos partes es que no hay arroba o no está bien situada.
- Para cada parte:
- Compruebo que tiene algún carácter
- Para cada carácter miro a ver si es un carácter permitido (es un carater numérico, alfanumérico o es un guión.
- Que no empiece por un punto.
- Compruebo que en la segunda parte de las conseguidas en el punto 1, tengo por lo menos un punto
- Que en la misma segunda parte tengo dos caracteres o tres, después del último punto. (Caracteres suficientes para la terminación del dominio)
- Si encuentro dos puntos seguidos en el email (..) tampoco es válido
Si la función detecta algún error en la sintaxis, devuelve false y termina la función... si no encontró ningún error, al final del todo, devuelve true.
El código comentado de la función se puede ver a continuación. También podemos
descargar el script para utilizarlo en nuestras propias páginas ASP.
<%
function validarEmail(email)
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
validarEmail = false
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
validarEmail = false
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
validarEmail = false
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
validarEmail = false
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
validarEmail = false
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
validarEmail = false
exit function
end if
'si encuentro dos puntos seguidos tampoco va bien
if InStr(email, "..") > 0 then
validarEmail=false
exit function
end if
validarEmail = true
end function
%>