Emailadresse online überprüfen
Clumsy
- cgi
0 Philipp0 X0 klaus
0 Cheatah0 Andreas Flückiger0 Christian Maier
Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.
Ich sag schonmal Danke
Hallo,
auch wenn ich mich nicht besonders auskenne, nur so eine Idee. Der vordere Teil der Email wird erst vom endgültigen Mailserver interpretiert, man könnte aber schauen, ob der Server einen Mailport geöffnet hat. Müsste man nur noch wissen, wie man den Port abfrägt und welcher das ist. Dann weisst Du zumindest, ob die Andresse thoeretisch möglich ist.
Gruss
Philipp
Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.
Ich sag schonmal Danke
hi clumsy,
Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.
wenn die frage ist, die existenz zu prüfen, dann nein, wäre ja wunderbar, dann könnten mailspammer einfach mal abchecken, welche adresse so existieren und dann geht es los ;) du kannst aber den syntax der adresse prüfen, da muß mind. 1 zeichen stehen (user), dann ein @. dann von hinten angefangen, die 2 bis 3-stellige (g)tld-endung (nur buchstaben!; ok, *.arpa fallen da durch, habe ich aber selbst noch nie gesehen), dann einen punkt, davor der domainname, der ist mind. 2 und maximal 63 (imho) zeichen lang (keine umlaute, nur buchstaben, ziffern und - möglich). zwischen domainnamen und dem @ (also auch von rechts nach links gesehen) stehen dann eventuell noch subdomain(s), können auch mehrere sein.
frage: gibt es eigentlich mailadressen, die auf die ip-nummer enden, theoretisch müßte es ja möglich sein, oder?
user@(subdomain.)domainname.tld-endung
cu, X
ps: wenn hinten .dd steht, dann ist die mailadresse garantiert falsch, diese tld ist momentan nicht vergeben, könntest du auch noch abchecken, ob die letzten 2 (de, at, ch, us, au, ru, nu, cc usw.) bzw. 3 (gov, edu, mil, int, net, com, org) zeichen "zugelassen" sind.
Hallo,
Eigentlich müßte es ja möglich sein, den MX-Record der übergebenen Domain rauszufinden.
Über den könnte man ja dann Verbindung mit dem Mailserver aufnehmen, und zumindest überprüfen, ob da überhaupt ein Server vorhanden ist.
Ich kenn mich ja beim SMTP-Protokollnicht aus, aber da gibts sicher eine Möglichkeit, zu überprüfen, ob ein User am Mailserver vorhanden ist. Wie bringen es sonst Mail-Server fertig, Mails auszuliefern.
Also flugs einen mini-Mailserver schreiben und dann die Adresse überprüfen.
Theoretisch müßte das möglich sein. Denk ich.
Grüße
Klaus
Hallo Klaus,
Theoretisch müßte das möglich sein. Denk ich.
...praktisch auch.
Den untenstehenden Code-Schnippsel habe ich auf einer PHP-Source-Seite gefunden. Dort ist auch recht ausführlich beschreiben was dahinter steckt und wo es Schwierigkeiten geben kann.
Leider hab ich die Seite auf die schnelle in meinen Bookmarks nicht wieder gefunden (sollte mal wieder aufräumen):
function validateEmail ($email)
{
global $SERVER_NAME;
$return=array(false,"","","");
list($user,$domain)=split("@",$email,2);
$arr=explode(".",$domain);
$count=count($arr);
$tld=$arr[$count-2].".".$arr[$count-1];
if (checkdnsrr($domain,"MX")) {
if (getmxrr($domain,$mxhosts,$weight)) {
for ( $i=0; $i < count($mxhosts); $i++)
{
$fp = fsockopen ($mxhosts[$i], 25 );
if ($fp)
$s = 0;
$c = 0;
$out = "";
set_socket_blocking ( $fp, false );
do
{
$out = fgets ( $fp, 2500 );
if ( ereg ( "^220", $out ) )
{
$s = 0;
$out = "";
$c++;
$return[2] = true;
$return[3] = $mxhosts[$i];
}
else if (($c > 0) && ($out == ""))
{
$return[2] = true;
break;
}
else
{ $s++; }
if ( $s == 9999 ) {
break;
}
} while ( $out == "" );
set_socket_blocking ( $fp, true );
fputs ( $fp, "HELO ".$SERVER_NAME."\r\n");
$output = fgets ( $fp, 2000 );
fputs ($fp,"MAIL FROM: <info@".$domain.">\r\n");
$output = fgets ( $fp, 2000 );
fputs($fp,"VRFY <".$email.">\r\n");
$output = fgets ($fp, 2000);
if (ereg("^550",$output))
{
$return[0] = false;
$return[1] = $output;
}
else
{
$return[0] = true;
$return[1] = $output;
}
fputs ( $fp, "QUIT\r\n");
fclose($fp);
if ($return[0] == false) {
break;
}
}
}
} else {
$return[0] = false;
$return[1] = "Invalid email address (bad domain name)";
$return[2] = false;
}
return $return;
}
Bin noch nicht dazu gekommen es selber auszuprobieren.
SolOng
Stephan
Hallo,
Habs mal mit meinem Linux-Rechner ausprobiert, allerdings mag mein sendmail kein VRFY.
mit 'RCPT' ist's gegangen
einfach ausprobieren mit telnet:
TELNET mailserver 25
HELO domain.name
MAIL FROM: meine@mail.adresse
RCPT TO: zu_ueberpruefender_name
QUIT
Alle Kommandos liefern einen Rsponse retour, wobei am anfang der Zeile eine Zahl steht. Anscheinend bedeuten Zahlen im Bereich 200-299 'ok' und Zahlen im Bereich >500 'nixgutt'.
Näheres steht in RFC 821 und ergänzungen durch pätere RFC's.
Grüße
Klaus
genial >:-)))) Vielen Dank (obwohl ich nicht der Fragesteller war)!!!!
Hallo,
Habs mal mit meinem Linux-Rechner ausprobiert, allerdings mag mein sendmail kein VRFY.
mit 'RCPT' ist's gegangen
einfach ausprobieren mit telnet:TELNET mailserver 25
HELO domain.name
MAIL FROM: meine@mail.adresse
RCPT TO: zu_ueberpruefender_name
QUITAlle Kommandos liefern einen Rsponse retour, wobei am anfang der Zeile eine Zahl steht. Anscheinend bedeuten Zahlen im Bereich 200-299 'ok' und Zahlen im Bereich >500 'nixgutt'.
Näheres steht in RFC 821 und ergänzungen durch pätere RFC's.
Grüße
Klaus
Hi,
Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.
was in perldoc perlfaq9 steht, gilt auch für jede andere Sprache:
"How do I check a valid mail address?
You can't, at least, not in real time. Bummer, eh?"
Es steht noch einiges mehr dazu da, inkl. Lösungsansätzen zu dem, was möglich ist. Wenn Du's wirklich wissen willst, installiere Dir am besten Perl und lies das entsprechende Kapitel.
Cheatah
Hallo Clumsy
Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.
In Perl kannst du mit dem Modul Email::Valid (http://www.perl.com/CPAN-local/authors/id/M/MA/MAURICE) die Syntax der Adresse sowie die Existenz eines Mailservers beim Empfänger überprüfen. Nachfolgend ein Beispiel:
use Email::Valid;
if(Email::Valid->address(-address=>$email,-mxcheck=>1)) {
} else {
}
Gruss
Andreas
Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.
Für PHP als elegantere Alternative zu CGI/Perl gibt es eine hervorragende Lösung:
Bei Verwendung der E-Mail Validation Class (<a href="http://phpclasses.upperdesign.com/browse.html/package/13">phpclasses.upperdesign.com/</a>) wird sowhl die Syntax der Adresse, als auch der Host (als gültige MX-Domain) und der User am Mailserver online überprüft.
Die Verwendung der Klasse könnte dann in etwa so aussehen:
<html><head>T E S T</head><body>
...
<?php
require("email_validation.php"); // Muß in include-Path; sonst Pfad verwenden ("../email_validation.php")
$validator = new email_validation_class;
$validator->timeout = 10;
$valid = true;
if(isset($email) && strcmp($email,"")) {
if($validator->ValidateEmailBox($email) <= 0)
$valid = false;
} else $valid = false;
?>
...
<!--Beispiel für HTML-Ausgabe_Start-->
<?php if($valid == true): ?>E-Mail-Adresse angenommen! :-)
<?php else: ?>E-Mail-Adresse abgelehnt! ;-)
<?php endif; ?>
<!--Beispiel für HTML-Ausgabe_End-->
...
</body></html>
Gibt true oder false für $valid zurück.
Ich selbst verwende es für meinen "SendToFriend-Service", mit dem man einen Link zur gerade angezeigten Seite an einen Bekannten, etc. per E-Mail versenden kann.
Viele Grüße,
Christian Maier