Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
E-Mail Check etwas anspruchsvoller! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
E-Mail Check etwas anspruchsvoller!


 
daniel987
14-02-2005, 19:33 
 
Ich mache mir gerade darüber gedanken, wie ich E-mail Adressen auf ihre völlige Korrektheit prüfen kann.
Bis jetzt geht mein Ansatz so:


1.) Check mit Reguläten Ausdrücken
2.) Dns Check auf Die Domain
3.) Versuchen einen Socket auf dem Smtp Server zu öffnen

Eigentlich wäre das ja dann ziemlich perfekt wenn denn 3.) immer funktionieren würde, bei meiner eigenen Domain funzt es zB. aber web.de oder gmx Adressen tanzen da natürlich mal wieder aus der Reihe und geben gar keine Rückantwort. Wodurch die Seite dann eine ewigkeit lädt aber einfach keine Rückmeldung gibt. Hat jemand eine Idee, wie ich web.de Adressen & Co auf ihre Existenz prüfen könnte?
(Achso ich möchte das mit einem Skript hinbekommen nicht mit einer Aktivierungsmail).
Mein bisheriger Ánsatz:



function checkEmail($email)
{
global $info;

if(preg_match("/^([a-zA-Z0-9-])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $email))
{
list($username, $domain) = split('@', $email);

if(! checkdnsrr($domain,'MX') )
{
return 0;
}

if( $info->vars['smtp_check_mail'])
{
// attempts a socket connection to mail server
if(! fsockopen($domain, 25, $errno, $errstr, 30) )
{
return 0;
}
}

return 1;
}

return 0;
}

 
goth
15-02-2005, 02:04 
 
Vielleicht wertest Du einfach mal das Ergebnis von checkdnsrr($domain,'MX') aus .. und verwendest anstatt von $domain den zurückgegebenen Hostnamen ... !

Ich bekomme (via dig) die Hostnamen

mx-ha01.web.de
mx-ha02.web.de

Zurück ... und Telnet (25) auf diese Hosts funktioniert auch ... also sollte auch ein fsockopen funktionieren ... !

 
daniel987
15-02-2005, 07:29 
 
Ich versteh nicht so ganz wie du das jetzt meinst. Wo soll denn da ein Hostname wie mx-ha01.web.de zurrückgegeben werden?

 
jahlives
15-02-2005, 07:49 
 
Salut

wie von goth geschrieben solltest du checkdnsrr($domain,'MX') verwenden. Das Prob ist nämlich, dass der SMTP-Server meist anderst heisst als nur die Domain z.B. nicht smtp.gmx.ch sondern mx-aa01.gmx.ch
Wenn du also abfragen willst ob eine Mail existiert, dann musst du den zuständigen SMTP-Server der Domain abfragen, welchen du mittels checkdnsrr zurückbekommst.

Gruss

tobi

 
goth
15-02-2005, 11:53 
 
Daniel hat schon Recht ... http://de.php.net/manual/en/function.getmxrr.php ... da geht's lang ... die Funktion prüft ... und gibt zurück ... :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:03 Uhr.