Wie kann ich überprüfen, ob eine E-Mail-Adresse existiert, ohne eine E-Mail zu senden?
Habe ich in dieser PHP-code, um zu überprüfen E-Mail-Adresse über SMTP-ohne das senden einer E-Mail.
Hat jemand versucht, etwas ähnliches oder funktioniert es bei dir? Können Sie sagen, wenn Sie eine E-Mail Kunde /Nutzer eingibt, richtig ist & existiert?
InformationsquelleAutor der Frage php-guy | 2009-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Methoden, Sie können manchmal verwenden, um zu bestimmen, wenn ein Empfänger tatsächlich existiert:
Können Sie eine Verbindung zum server herstellen, und geben eine VRFY-Befehl. Sehr wenige Server unterstützen diesen Befehl, aber es ist dazu gedacht, genau dies. Wenn der server antwortet mit der 2.0.0-DSN, der user existiert.
VRFY Benutzer
Können Sie ein Problem RCPT, und sehen, ob die mail abgewiesen.
MAIL FROM:<>
RCPT TO:<Benutzer@domain>
Wenn der Benutzer nicht existiert, erhalten Sie eine DSN 5.1.1. Aber, nur weil die E-Mail wird nicht abgelehnt, bedeutet nicht, dass der Benutzer vorhanden ist. Einige server im hintergrund verwerfen-Anfragen wie diese zu verhindern Aufzählung Ihrer Nutzer. Andere Server können nicht überprüfen Sie die Benutzer -, und akzeptieren Sie die Nachricht unabhängig.
Gibt es auch eine antispam-Verfahren namens greylisting, die bewirken, dass den server ablehnen, die Adresse zunächst, in der Erwartung, einen echten SMTP-server versuchen würde, eine re-Lieferung einige Zeit später. Dieses Durcheinander versucht wird, überprüfen Sie die Adresse.
Ehrlich, wenn Sie versuchen, zu validieren, eine Adresse der beste Ansatz ist, um eine einfache regex zu blockieren, offensichtlich ungültige Adressen, und senden Sie dann eine E-Mail mit einem link zurück zu Ihrem system, die überprüft, ob die E-Mail empfangen wurde. Dies stellt auch sicher, dass Sie Benutzer in Ihre eigentliche E-Mail, nicht eine leichte Tippfehler, das passiert, gehören zu jemand anderem.
InformationsquelleAutor der Antwort Joseph Tary
Anderen Antworten hier diskutieren die verschiedenen Probleme, die mit dem Versuch, dies zu tun. Ich dachte, ich würde zeigen, wie Sie könnten versuchen, diese in den Fall, Sie wollten lernen, indem es selbst tun.
Können Sie eine Verbindung zu einem mail-server per telnet zu Fragen, ob eine E-Mail-Adresse vorhanden ist. Hier ist ein Beispiel für das testen einer E-Mail-Adresse für
stackoverflow.com
:Zeilen mit dem Präfix mit numerischen codes sind Antworten vom SMTP-server. Ich habe ein paar leere Zeilen, um Sie lesbarer zu machen.
Viele mail-Server nicht senden Sie diese Informationen als ein Mittel zur Vorbeugung gegen E-Mail-Adressen von Spam-Versendern, so verlassen Sie sich nicht auf diese Technik. Sie müssen jedoch möglicherweise einige Erfolge bei der Reinigung einige offensichtlich ungültige E-Mail-Adressen durch die Erkennung von ungültigen E-mail-Server oder Empfänger-Adressen abgelehnt, wie oben.
Beachten Sie auch, dass mail-Server kann die blacklist, wenn Sie zu viele Anfragen von Ihnen.
In PHP-ich glaube, Sie verwenden können
fsockopen
fwrite
undfread
zur Durchführung der oben genannten Schritte programmatisch:InformationsquelleAutor der Antwort Drew Noakes
Die Allgemeine Antwort ist, dass man nicht überprüfen, ob eine E-Mail-Adresse vorhanden ist Ereignis, wenn Sie eine E-Mail senden: es könnte gehen Sie einfach in ein Schwarzes Loch.
Dass gesagt wird die Methode beschrieben, es ist sehr effektiv. Es ist in der Produktion verwendeten code in ZoneCheck außer, dass es verwendet RSET statt BEENDEN.
Wo die Interaktion des Benutzers mit seiner mailbox ist nicht overcostly viele Seiten tatsächlich zu prüfen, ob die mail irgendwo ankommen, indem Sie senden eine geheime Nummer, die gesendet werden muss, zurück zu den emitter (entweder, indem Sie zu einer geheimen URL oder das senden wieder diese geheime Nummer per E-Mail). Die meisten Mailinglisten funktionieren wie, die.
InformationsquelleAutor der Antwort kmkaplan
Nicht wirklich.....Einige server können nicht kontrollieren, die "rcpt to:"
http://www.freesoft.org/CIE/RFC/1123/92.htm
Tun, so ist das Sicherheitsrisiko.....
Wenn der server tun, Sie können schreiben, ein bot, der Entdeckung jede Adresse auf dem server......
InformationsquelleAutor der Antwort l_39217_l
Einige Probleme:
Für einige SMTP-Server (z.B. gmail), müssen Sie SSL verwenden, um etwas zu tun.Dies gilt nur bei der Verwendung von gmail-SMTP-server zu senden E-Mail.InformationsquelleAutor der Antwort Graeme Perrow
Schlägt dies fehl (neben anderen Fällen), wenn der Ziel-mailserver greylisting verwendet.
Greylisting: SMTP-server verweigert die Auslieferung der ersten Zeit ein bisher unbekannter client die Verbindung herstellt, ermöglicht die nächste Zeit(s); somit bleibt ein gewisser Prozentsatz von spambots aus, während die Legale Nutzung - wie es wird erwartet, dass eine legitime E-mail-Absender wiederholt wirddas ist, was normale E-mail-transfer-Agenten zu tun.
Allerdings, wenn Ihr code prüft nur auf dem server einmaleinen server mit greylisting wird die Lieferung abzulehnen (als client verbinden zum ersten mal); es sei denn, Sie überprüfen noch einmal in eine Weile, Sie möglicherweise falsch zurückweisen gültige e-mail-Adressen.
InformationsquelleAutor der Antwort Piskvor
"Können Sie sagen, wenn Sie eine E-Mail Kunde /Nutzer eingibt, richtig ist & existiert?"
Genommen sind es zwei getrennte Dinge. Es könnte existieren aber nicht richtig sein könnte.
Manchmal müssen Sie nehmen die Eingaben des Benutzers auf den Nennwert. Es gibt viele Möglichkeiten, um die Niederlage der system sonst.
InformationsquelleAutor der Antwort Learning
Über alles, was Sie tun können, ist die Suche nach DNS und sorgen für die Domäne, die in der E-Mail-Adresse ein MX-record, andere als, dass es keine zuverlässige Möglichkeit, den Umgang mit diesem.
Einigen Servern kann die Arbeit mit dem rcpt-to-Methode, wo Sie mit der SMTP-server, aber es hängt ganz von der Konfiguration des Servers. Ein weiteres Problem kann sein, einen überlasteten server möglicherweise ein 550 code sagen Benutzer unbekannt ist, aber dies ist ein vorübergehender Fehler, es ist ein permanenter Fehler (451 glaube ich?) zurückgegeben werden können. Dies hängt ganz auf die Konfiguration des Servers.
Ich persönlich würde prüfen, ob die DNS-MX-Eintrag, dann senden Sie eine E-Mail-überprüfung, ob der MX-Eintrag existiert.
InformationsquelleAutor der Antwort Bryan Rehbein
Obwohl diese Frage ist ein bisschen alt, dieser service Tipp könnte helfen den Benutzern die Suche nach einer ähnlichen Lösung überprüfen der email Adressen über syntax-Validierung vor Versand.
Ich habe mit diesem open-Source-service für eine mehr in die Tiefe der Validierung von E-Mails (Prüfung für mx-Datensätze die e-mail-Adresse, domain etc.) für ein paar Projekte mit guten Ergebnissen. Es wird auch überprüft, für gemeinsame Tippfehler, die Hexe ist ganz nützlich. Demo hier.
InformationsquelleAutor der Antwort Henkealg
Vorausgesetzt, es ist der Benutzer - Adresse, einige mail-Server erlauben den SMTP VRFY-Befehl, um tatsächlich überprüfen Sie die E-Mail-Adresse gegen Ihre Postfächer. Die meisten der großen Website nicht geben Ihnen viel information; die gmail Antwort ist "wenn Sie versuchen, E-mail, wir werden versuchen, das zu liefern" oder so clever ist wie, die.
InformationsquelleAutor der Antwort Austin Salonen
Ich denke, man kann nicht, es gibt so viele Szenarien, in denen auch das senden einer e-mail kann scheitern. ZB. E-mail-server auf der Nutzer-Seite ist vorübergehend down, Postfach existiert, aber es ist so voll, dass die Nachricht nicht zugestellt werden kann, etc.
Das ist wahrscheinlich, warum so viele Seiten überprüfen einer Registrierung, nachdem der Benutzer bestätigt, dass Sie haben, erhalten Sie eine Bestätigungs-e-mail.
InformationsquelleAutor der Antwort PhiLho
InformationsquelleAutor der Antwort Sachin
InformationsquelleAutor der Antwort user4314333