Prova a vedere se questa va bene restituisce true/false in base all'indirizzo passato.

'Controllo la validità dell'indirizzo e-mail
function IsMail(indirizzo)

' ritorna true se l'indirizzo mail è stato verificato
' ritorna false se l'indirizzo mail non è valido
dim atCnt
IsMail = True

' controlla la lunghezza dell'indirizzo mail
if len(indirizzo) < 5 then
' a@b.c può essere l'indirizzo più corto
' address could be
IsMail = False

' controlla il formato verificando che ci sia un solo @
elseif instr(indirizzo,"@") = 0 then
IsMail = False

' controlla che ci si almeno un punto
elseif instr(indirizzo,".") = 0 then
IsMail = False

' controlla che non ci siano più di tre caratteri per l'estensione del dominio
elseif len(indirizzo) - instrrev(indirizzo,".") > 3 then
IsMail = False

' controlla che non ci siano simboli "_" dopo la @
elseif instr(indirizzo,"_") <> 0 and _
instrrev(indirizzo,"_") > instrrev(indirizzo,"@") then
IsMail = False

else
' deve contenere una sola "@"
atCnt = 0
for i = 1 to len(indirizzo)
'se trova la @ incrementa un contatore
if mid(indirizzo,i,1) = "@" then
atCnt = atCnt + 1
end if
next

'se sono state trovate più @ l'indirizzo non è valido
if atCnt > 1 then
IsMail = False
end if

' Controlla ogni carattere per la validità
for i = 1 to len(indirizzo)
if not isnumeric(mid(indirizzo,i,1)) and _
(lcase(mid(indirizzo,i,1)) < "a" or _
lcase(mid(indirizzo,i,1)) > "z") and _
mid(indirizzo,i,1) <> "_" and _
mid(indirizzo,i,1) <> "." and _
mid(indirizzo,i,1) <> "@" and _
mid(indirizzo,i,1) <> "-" then
IsMail = False
end if
next
end if

end function

Ciao