Hi Holger!
Ich benutze seit einiger Zeit eine Kombination aus Syntaxcheck der Adresse und dem Versuch, die Existenz der Domain zu ermitteln.
#Sonderzeichen aus Mail-Adr entfernen, zugelassen: a-z, A-Z, _-+*$.@
$email =~ s/[^a-zA-Z0-9_-+\*$.@]//g;
#SyntaxCheck
ein oder mehr Zeichen vor @
ein oder mehr Zeichen nach @
2 oder mehr Zeichen nach .
if ($email !~ /(.+)@(.+).(.{2,})/)
{
#Syntax falsch
$emailok = 0;
}
else
{
#Syntax OK
$emailok = 1;
}
.
.
.
#Domain checken über den Umweg: ermitteln der IP
$email_domain = substr($email,(index($email,"@") + 1));
(@wwwhost_email) = unpack("C4",gethostbyname("www.".$email_domain));
(@host_email) = unpack("C4",gethostbyname($email_domain));
.
.
.
Wenn weder @wwwhost_email noch @host_email ein Ergebnis enthält und/oder auch noch die Syntax falsch war, dann gebe ich die eingegebene Adresse nochmal aus und fordere den User auf, diese zu Überprüfen. Ändert er die Adresse, wird nochmal gecheckt, bestätigt er sie ungeändert, dann muss ich ihm wohl glauben...;-)
Dieser Weg ist offensichtlich ein guter Kompromiss, denn die Anzahl der falschen eMail-Adressen ist stark zurückgegangen.
Gruß Frank