Hi,
ich suche eine gute Möglichkeit eine E-Mail Adresse auf Existenz zu überprüfen. Ich habe hierzu in den Kommentaren der Doku folgende Funktion gefunden:
Ist diese Idee vom Prinzip her gut, oder bringt eine solche Validierung auch Nachteile? Mal abgesehen davon, dass die Überprüfung ~3 Sekunden dauert.
Ich würde die Funktion noch etwas umschreiben sodass als erstes die Syntax geprüft wird und die weiteren Funktionen (explode, getmxrr) erst ausgeführt werden, wenn die Syntax korrekt ist.
Aber diese "Arbeit" möchte ich mir nur machen, wenn diese Funktion wirklich Sinn macht. Meiner Meinung nach ist das eine ziemlich gute Methode. Habe es vorhin an einer Vielzahl an Mail Adressen ausprobiert und konnte keinerlei Probleme feststellen. Aber vllt. kennt ihr ja noch welche
*edit*
Selbstverständlich möchte ich mit dieser Funktion nicht das DOI ersetzen.
ich suche eine gute Möglichkeit eine E-Mail Adresse auf Existenz zu überprüfen. Ich habe hierzu in den Kommentaren der Doku folgende Funktion gefunden:
PHP:
function send_command($fp, $out){
fwrite($fp, $out . "\r\n");
return get_data($fp);
}
function get_data($fp){
$s="";
stream_set_timeout($fp, 2);
for($i=0;$i<2;$i++)
$s.=fgets($fp, 1024);
return $s;
}
function validate_email($email){
$mailparts=explode("@",$email);
$hostname = $mailparts[1];
// validate email address syntax
$exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";
$b_valid_syntax=eregi($exp, $email);
// get mx addresses by getmxrr
$b_mx_avail=getmxrr( $hostname, $mx_records, $mx_weight );
$b_server_found=0;
if($b_valid_syntax && $b_mx_avail){
// copy mx records and weight into array $mxs
$mxs=array();
for($i=0;$i<count($mx_records);$i++){
$mxs[$mx_weight[$i]]=$mx_records[$i];
}
// sort array mxs to get servers with highest prio
ksort ($mxs, SORT_NUMERIC );
reset ($mxs);
while (list ($mx_weight, $mx_host) = each ($mxs) ) {
if($b_server_found == 0){
//try connection on port 25
$fp = @fsockopen($mx_host,25, $errno, $errstr, 2);
if($fp){
$ms_resp="";
// say HELO to mailserver
$ms_resp.=send_command($fp, "HELO microsoft.com");
// initialize sending mail
$ms_resp.=send_command($fp, "MAIL FROM:<[email protected]>");
// try receipent address, will return 250 when ok..
$rcpt_text=send_command($fp, "RCPT TO:<".$email.">");
$ms_resp.=$rcpt_text;
if(substr( $rcpt_text, 0, 3) == "250")
$b_server_found=1;
// quit mail server connection
$ms_resp.=send_command($fp, "QUIT");
fclose($fp);
}
}
}
}
return $b_server_found;
}
Ich würde die Funktion noch etwas umschreiben sodass als erstes die Syntax geprüft wird und die weiteren Funktionen (explode, getmxrr) erst ausgeführt werden, wenn die Syntax korrekt ist.
Aber diese "Arbeit" möchte ich mir nur machen, wenn diese Funktion wirklich Sinn macht. Meiner Meinung nach ist das eine ziemlich gute Methode. Habe es vorhin an einer Vielzahl an Mail Adressen ausprobiert und konnte keinerlei Probleme feststellen. Aber vllt. kennt ihr ja noch welche
*edit*
Selbstverständlich möchte ich mit dieser Funktion nicht das DOI ersetzen.
Zuletzt bearbeitet: