Supportnet Computer
Planet of Tech

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

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

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

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:-)
<?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

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:


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


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: