AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein E-Mailadresse auf Gültigkeit überprüfen
Thema durchsuchen
Ansicht
Themen-Optionen

E-Mailadresse auf Gültigkeit überprüfen

Offene Frage von "Synollus"
Ein Thema von Synollus · begonnen am 21. Mai 2009 · letzter Beitrag vom 21. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Synollus

Registriert seit: 29. Dez 2008
49 Beiträge
 
#1

E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 12:35
Ich suche keinen Standard-Code, um zu testen, ob ein @ im String der E-Mailadresse ist.

Die Seite http://reisen.gewinneronline.de zum Beispiel kann erkennen, ob eine E-Mail gültig ist. Aber er überprüft nicht nur, ob der Provider existiert, sondern auch, ob genau diese E-Mail existiert.

Bei Mustermann@gmx.de würde er z.B. annehmen, MaxMustermann6789@gmx.de nicht (nehme ich mal an, da die nicht existiert ).

Ich verstehe nicht, wie die das umsetzen und ich kann sowas sehr gut gebrauchen. Bei Google findet man halt immer nur diese Standard-Codes in PHP.

Nach was muss ich denn suchen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.137 Beiträge
 
Delphi 12 Athens
 
#2

Re: E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 12:39
da wirst du dich vermutlich einfach mal mit den eMail-Protokollen auseinandersetzen müssen
und dann eine Anfrage an das gewünschte Postfach bzw. den Server abschicken und fragen, ob dieses Fach auch existiere
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 12:58
Mithilfe von regulären Ausdrücken:
Code:
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
Nach RFC 28222 ist eine Email-Adresse:
Code:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Synollus

Registriert seit: 29. Dez 2008
49 Beiträge
 
#4

Re: E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 13:02
Zitat von TurboMartin:
Mithilfe von regulären Ausdrücken:
Code:
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
Vielleicht solltest du nochmal den Start-Post lesen. Das kann ich selber. Aber man kann auch E-Mails überprüfen, ob sie 100 %ig existieren, oder ob es den "Usernamen" bei dem Host gar nicht gibt.

@himitsu: Dafür habe ich momentan keine Zeit das alles selbst zu machen, da ich mich mit E-Mail-Protokollen auch noch nie beschäftigt habe. Ich bin auch bereit ein vernünftiges, funktionierendes Script käuflich zu erwerben.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

Re: E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 13:19
Hi!

Afair gibt es im SMTP-Protokoll ein Verify-Command - allerdings wird das Vorhaben vermutlich scheitern, da dieses nicht von allen Servern unterstützt wird.


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Synollus

Registriert seit: 29. Dez 2008
49 Beiträge
 
#6

Re: E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 13:38
Danke fkerber.

http://the-welters.com/professional/smtp.html

Dort habe ich eine schöne Übersicht gefunden über die einzelnen Befehle. Aber 2 abschließende Fragen habe ich noch:

1. Die Befehle kann ich bei Telnet eingeben. Wie soll ich das in PHP machen?

2. Wenn ein Mailserver diese Überprüfung nicht zulässt, unterscheidet sich die Antwort "Erlaube ich nicht" von der Antwort "Mail gibt es nicht" oder gibt er in beiden Fällen nur ein False zurück?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 14:00
unbekannte Kommandos werden in aller Regel anders beantwortet als vorhandene.
Die angeggebene Methode funktioniert übrigens nur bedingt. Ist beispielsweise Catchall im Einsatz wirst du immer zurück bekommen das die Adresse gültig ist. Und ganz ehrlich - selbst ohne catchall würde ich bei meinem Mailserver derartige Anfragen blockieren da dort Spamverdacht herscht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 15:48
@synollus: Guck dir mal die PHP-Befehle fsockopen, fwrite, fread und fclose an. Damit kannst du auch Socket-Kommunikation zu einem entfernten Server realisieren.
Andere Alternative: irgendeine Mail-Klasse (z.B. die SWIFT-Library) runterladen um zu vermeiden, dass du die SMTP-Kommunikation selbst implementieren musst.

Aber kurzum: du kannst nicht 100%ig feststellen, ob eine E-Mail-Adresse existiert. Dafuer gibt es mehrere Gruende:
  • Ein Verify-Request muss nicht unbedingt akzeptiert werden - im Gegenteil, viele Mail-Server schlucken einfach alles und schicken teilweise keine Fehlermeldungen mehr raus, damit Mail-Adressen nicht verifiziert werden koennen (Stichwort Spam)
  • Wenn ein Verify-Request fehlschlaegt kann man nicht davon ausgehn, dass die Adresse nicht existiert. Beispielsweise kann auch grad der MTA down sein.
  • Wenn der Server nicht erreichbar ist, muss nicht sein dass er nicht existiert - es kann auch sein dass er momentan nicht erreichbar ist.
  • Wenn ein Server in den Lookup-Tables nicht vorhanden ist, ist zwar wahrscheinlich dass er nicht existiert, aber es ist nicht sicher. Kann ja auch ein Routing- oder anderes Problem sein
  • Wenn eine Test-Mail beim ersten Versuch nicht zugestellt wird, heisst das nicht dass der Account nicht existiert. Viele MTAs verlangen mittlerweile einen zweiten Zustellversuch um Spam-Bots durcheinanderzubringen
  • Wenn nach einer Test-Mail kein Fehler zurueckkommt, heisst es nicht immer dass sie auch tatsaechlich in einem Postfach landet. So kann z.B. ein Catchall eingerichtet werden, der alle Mails ausser jenen, die an einzelne Adressen gehn direkt nach /dev/null schiebt
  • Wenn nach einer Test-Mail kein Fehler zurueckkommt kann das auch heissen, dass die Mail abgelehnt wird, der Server aber keine Meldung gibt um keine Informationen ueber die Adresse bekanntzugeben.

Kurzum: du kannst nicht 100%ig wissen, ob eine Adresse existiert. Deshalb wird bei einer Registrierung auch eine Mail mit Aktivierungslink verschickt, bei vielen Webseiten wird der Account auch geloescht, wenn er nicht innerhalb einer bestimmten Zeit aktiviert wird.

@TurboMartin: Mich wuerde interessieren, wo du die Regexp herhast - es gibt naemlich jede Menge RegEchsen, die behaupten sie wuerden E-Mail-Adressen validieren, allerdings ist mir bisher noch keine einzige (und ich hab viele davon schon gesehn) untergekommen, die die RFC-Spezifikation wirklich zu 100% implementiert ohne gleichzeitig auch wieder ungueltige Adressen zuzulassen.
In deinem Fall bin ich zu Faul das Ding durchzugehn, allerdings laesst das Fehlen von Look-Ahead oder Look-Behind-Teilen darauf schliessen, dass auch sowas akzeptiert wird: abc"@foo.com, was eigentlich keine Gueltige Adresse ist. Genauso wird folgende Adresse:
Code:
FooBar <foobar@foo.com>
wohl nicht akzeptiert, obwohl es eigentlich eine gueltige Adresse darstellt. Das bewahrheitet mal wieder die These, dass es eigentlich keine Regular Expression gibt, die eine Mail-Adresse haargenau nach der RFC-Spezifikation implementiert, ohne false positives oder false negatives zu produzieren

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#9

Re: E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 16:01
Hi!

Ich habe die RegEx mal kurz durch ein paar Tester gehauen.
Er erkennt abc"@foo.com als fehlerhaft und "filtert" aus FooBar <foobar@foo.com> zumindest die gültige Adresse raus, was ja an sich ausreicht...


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.137 Beiträge
 
Delphi 12 Athens
 
#10

Re: E-Mailadresse auf Gültigkeit überprüfen

  Alt 21. Mai 2009, 16:11
Diese RegEx filtert also scheinbar eine richtige Mail aus einem String, validiert diesen selber aber nicht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz