A raíz de un problema con ciertas direcciones de correo del estilo
nombre.apellido@es.dominio.com, he modificado ligeramente la función. Ha salido esto:
Public Function IsEmail2(ByVal strEmail As String) As Boolean
' Adaptación de Xavi de la función de Rubén Vigón
Dim strTemp As String
' verificamos que contiene un @
If Not InStr(strEmail, "@") > 0 Then
' si no lo contiene no es válido
IsEmail2 = False
Else
' verificamos que no contiene un segundo @
If InStr(InStr(strEmail, "@") + 1, strEmail, "@") > 0 Then
IsEmail2 = False
Else
strTemp = Mid(strEmail, InStr(strEmail, "@"), Len(strEmail))
' lo contiene. verificamos si contiene un punto despues del @
If Not InStr(strTemp, ".") > 0 Then
' si no lo contiene no es válido
IsEmail2 = False
Else
' lo contiene, verifiquemos que, por detrás del último punto, existen al menos dos caracteres
If Len(strEmail) - InStrRev(strEmail, ".") < 2 Then
IsEmail2 = False
Else
IsEmail2 = True
End If
End If
End If
End If
End Function