Supportnet / Forum / Skripte(PHP,ASP,Perl...)
E-Mail Adresse überprüfen
Frage
Hallo
Wollte mal wissen ob jemand noch einen besseren Code erstellen kann um eine E-Mail Adresse auf korrekte schreibweise zu überprüfen.
Frag mich nur ob ich schon am Ende der möglichkeiten bin. Noch zur Info: ich verwende PHP Vers. 4.2.1
[code] //******* eMail + Umlautüberprüfung ********
if (!preg_match("/^[A-Za-z0-9\äöü\-\_\.]+\@[A-Za-z0-9\-\_]+\.[A-Za-z]+/",$this->email)) {
$Fehler = 6;
$this->_erstellFehlerHtml($Fehler, $ok);
}
[/code]
Bin mal gespannt ... Muki
Antwort 1 von Nessus
Hi,
Du überprüfst mit den regulären Ausdrücken die Zusammensetzung der Mail, mehr kannst Du IMHO nicht machen.
Nessus
Du überprüfst mit den regulären Ausdrücken die Zusammensetzung der Mail, mehr kannst Du IMHO nicht machen.
Nessus
Antwort 2 von ThomasOOP
du kannst ja noch n ping an den host senden und auf dasein prüfen *fg*
man(n) kanns aber auch übertreiben
im endeffekt kannst du nie 100% sicher sein das die email korrekt ist
ausser du schickst ihm eine und er muss n link zum aktivieren anklicken
man(n) kanns aber auch übertreiben
im endeffekt kannst du nie 100% sicher sein das die email korrekt ist
ausser du schickst ihm eine und er muss n link zum aktivieren anklicken
Antwort 3 von BaronMuki
Hallo Thomas
mir gehts auch nicht um eine Wasserdichte E-Mail Addi überprüfung, dazu gibts andere möglichkeiten .... mir ging es nur um die Abprüfung der Korrekten Schreibweise in einer Form.
Gruss Muki
mir gehts auch nicht um eine Wasserdichte E-Mail Addi überprüfung, dazu gibts andere möglichkeiten .... mir ging es nur um die Abprüfung der Korrekten Schreibweise in einer Form.
Gruss Muki
Antwort 4 von semi
Hi,
ich habe mal sowas gemacht. Versuche mal Dein Pattern mit dem Array unten, mal sehen, was dabei rauskommt.
Es sind zwar nicht alle möglichen Fälle aber egal, es reicht:-)
Gruß,
Michael
ich habe mal sowas gemacht. Versuche mal Dein Pattern mit dem Array unten, mal sehen, was dabei rauskommt.
Es sind zwar nicht alle möglichen Fälle aber egal, es reicht:-)
<?php
$emails = array(
"ab", // falsch
"a.b", // falsch
"a@b", // falsch
"a@b.", // falsch
"a@.bc", // falsch
"a@b.c", // falsch
"a@b.cd", // OK
"a@@b.cd", // falsch
"a@-bc", // falsch
"a@-.bc", // falsch
"a@b-.cd", // falsch
"a@b-c.d", // falsch (mind. 2 Buchstaben am Ende)
"a@b-c.de", // OK
"a@b-c.def", // OK
"a@b.c.de", // OK
"@a.bc", // falsch
"-@a.bc", // falsch
".@a.bc", // falsch
"-a@b.cd", // falsch
".a@b.cd", // falsch
"a-@b.cd", // falsch
"a.@b.cd", // falsch
"a..b@c.de", // falsch
"a--b@c.de", // falsch
"a.b@c.de", // OK
"a-b@c.de", // OK
"a.b@c-d.ef", // OK
"a-b@c.d.ef" // OK
);
$pattern = "/^[\w\d]+([\.-]?[\w\d]+)*@\w+([\.-]?[\w\d]+)*\.\w{2}\w*$/i";
echo "<table border=1 cellspacing=5>\n";
for($i=0; $i < count($emails); $i++) {
echo "<tr>\n";
if(preg_match($pattern, $emails[$i]))
echo " <td>".$emails[$i]."</td>\n <td>OK</td>\n";
else
echo " <td>".$emails[$i]."</td>\n <td>ungültig</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
?> Gruß,
Michael
Antwort 5 von ProtexX
Man könnte sich per SMTP auf dem entsprechenden Server anmelden und versuchen eine Mail an die Adresse zu schicken...
Antwort 6 von Nessus
@ProtexX
Danke für die Wiederbelebung des Uralt-Threads.
Was soll deine Möglichkeit bringen???
Nessus
Danke für die Wiederbelebung des Uralt-Threads.
Was soll deine Möglichkeit bringen???
Nessus
Antwort 7 von ProtexX
Wenn du schonmal über Telnet eine EMail verschickt hast, müsstest du wissen, der Server eine Fehlermeldung zurückgibt, wenn der Benutzer nicht existiert.
Mann könnte das so machen:
NB|Services
Mann könnte das so machen:
function check($host,$user){
$fp = fsockopen ($host, 25);
set_socket_blocking ($fp, true);
fputs ($fp, "Helo Local\n");
fgets ($fp, 2000);
fgets ($fp, 2000);
fputs ($fp, "Mail From:<$user@$host> \n");
fgets ($fp, 2000);
fputs ($fp, "RCPT to:aetos<$user@$host> \n");
$result= fgets ($fp, 2000);
$st= substr($result,0,3);
if ($st==250){
echo"Emailadresse existiert";
}
else
echo"Emailadresse existiert nicht!";
}
NB|Services

