E-Mail-Adresse auf Gültigkeit prüfen

Dörti.Hermi

Erfahrenes Mitglied
Hallo!

Hab hier schon gelesen, dass es per JS möglich ist, eine über ein Formular eingegebene E-Mail-Adresse zu überprüfen, ob ein '@' und ein '.' enthalten sind.
Jetzt meine Frage: Gibt es irgendeine Möglichkeit eine E-Mail-Adresse auf ihre Gültigkeit zu überprüfen, also das sie wirklich existert?

Mich interessiert das, denn ich habe auf einer Website von mir ein E-Mail-Formular, das per PHP versendet wird. Wenn sich nun jemand einen Scherz erlauben will und eine ungültige E-Mail-Adresse eingibt, dann soll dieses Mail gar nicht erst abgesendet werden. Die Überprüfung auf ein '@' und einen '.' bringt meiner Meinung nicht viel...

Danke schon für eure Ideen im Voraus,
Lg Andi
 
Schick eine mail hin und guck nach ob (und wenn ja, warum) sie gebounced wird. Eine andere Möglichkeit hast Du nicht.
Allerdings kannst Du mit dieser Methode auch auf diversen Blacklists geführt werden.
 
Zuletzt bearbeitet:
Vorher kannst du nie ermitteln, ob eine Adresse existiert oder nicht - Das ist auch gut so, denn ansonsten könnte man Spam-Spiders nicht ärgern, die alle Mailadressen aufsaugen, die sie finden können.
Nach dem Senden einer Mail an eine bestimmte Adresse jedoch lässt sich leicht prüfen, ob diese existiert, denn im Fehlerfall meldet sich - sofern eingerichtet - ein Hintergrunddienst, dass die Nachricht nicht an Adresse xyz übermittelt werden konnte. Das lässt sich sowohl positiv als auch negativ auffassen, denn in deinem Fall könntest du unter dem Vorwand einer "Kopie für den Klienten" eine Kopie der Mail an die Adresse zurückschicken und schauen, ob nach 5 bis 60 Minuten ein Reply des Daemons kommt. Wenn nicht, ist die Adresse existent. Spam-Versender nutzen dieses Schema leider auch aus um zu überprüfen, ob eine gefundene Adresse auch wirklich existiert - Aber das ist wohl ein anderes Thema.

Bevor du eine Mail versendest, eignet sich übrigens folgender Regex zur Validierung der meisten Adressen (Schätze mal, dass er 100% aller gängigen Adressen matcht und etwa 99 bis 99.9% aller möglichen Adressen):
Code:
^[a-z]+[a-z0-9]*[\.|\-|_]?[a-z0-9]+@([a-z]+[a-z0-9]*[\.|\-]?[a-z]+[a-z0-9]*[a-z0-9]+){1,4}\.[a-z]{2,4}

Noch ein kleiner Ansatz: Die Mail wird in der DB zwischengespeichert, der Versendende bekommt eine Nachricht mit einem Link, den er klicken muss, damit die Mail versendet wird. Das ist leider relativ umständlich, und höchstwahrscheinlich nicht das, was du benötigst... Eventuell hilft auch ein einfacher Wortfilter, der nach ^asdasd.*$ oder anderen Standardzeichensequenzen sucht.
 
Hallo, danke für eure Antworten.

Schick eine mail hin und guck nach ob (und wenn ja, warum) sie gebounced wird. Eine andere Möglichkeit hast Du nicht.
Allerdings kannst Du mit dieser Methode auch auf diversen Blacklists geführt werden.
@Navy: Was meinst du mit "gebounced" und "auf diversen Blacklists geführt"?

Und nochwas @maeTimmae:
folgender Regex zur Validierung der meisten Adressen
Was ist ein Regex?

Danke, LG
 
So, danke für deine Links. Theorie ist jetzt klar.
Jetz noch ein paar sachen: Die Idee mit dem Link, den der User anklicken muss, um die E-Mail zu versenden ist zwar prinzipiell ok, aber für meine Zwecke nicht geeignet, denn dann muss der User ja erst wieder in seinen Mail-Account schauen - dann kann er ja glei die Mail von dort aus versenden..

Nun zum Regex: Wie kann ich diesen Regex in einem php-file implementieren?

Danke, Lg Andi
 
Sorry, hab's erst jetzt wieder gesehen... Die Einbindung ist sehr simpel:

PHP:
if (preg_match("=^[a-z]+[a-z0-9]*[\.|\-|_]?[a-z0-9]+@([a-z]+[a-z0-9]*[\.|\-]?[a-z]+[a-z0-9]*[a-z0-9]+){1,4}\.[a-z]{2,4}=is", $input) > 0) {
    // ist valide, da mehr als kein Treffer
} else {
    // ist nicht valide, da Regex nicht gematcht wurde
}
 

Neue Beiträge

Zurück