2009-06-22 3 views
1

mögliche Dubletten:
Is there a php library for email address validation?
How to check if an email address exists without sending an email?E-Mail-Adresse Validierung

hallo Jungs,

wie kann ich bestätigen die E-Mail-Adresse Anbieter wie Yahoo per E-Mail?

Szenario:

[email protected]

wie kann ich es auf yahoo.com bestätigen, dass die E-Mail bereits erwähnt ist gültig?

Vielen Dank im Voraus.

---- PHP Regeln ----

+1

Ich denke, der Wortlaut dieser Frage ist etwas irreführend. Bitte beachten Sie, dass dies ist, um zu überprüfen, dass die E-Mail-Adresse tatsächlich existiert, nicht nur das Format der E-Mail-Adresse. – Nippysaurus

+0

Ja, der Titel sollte etwas wie "Überprüfung der Authentizität von E-Mails mit Anbietern oder Domänen oder Quelle" –

+0

Sorry Jungs Ich wusste nicht, was ist der Begriff dafür ... – user126445

Antwort

4

Die einzige „Propper“ Art und Weise eine E-Mail zu überprüfen ist, um tatsächlich versuchen, eine E-Mail an diese Adresse zu schicken, aber die meiste Zeit ein regulärer Ausdruck den Trick .

Um das Problem komplizieren, möchten Sie vielleicht nur eine einfache Validierung wie diese

^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,6}$ 

oder ein etwas komplexeres wie diese

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b 

a Es über E-Mail-Validierung ziemlich guter Artikel ist here

+0

das Problem liegt nicht im Format der E-Mail. Die Validierung erfolgt über die E-Mail-Adresse, wenn sie wie Yahoo.com für den E-Mail-Anbieter gültig ist. – user126445

+0

ooooh. Entschuldigung, mein Fehler. – Nippysaurus

+0

Es ist ok ... übrigens danke für die Antwort ---- PHP Regeln ---- – user126445

2

Stellen Sie eine SMTP-Verbindung zum Server her und führen Sie eine "Sender-Verify" -Lookup durch:

telnet <Yahoo MX> 25 
helo here.com 
mail from: [email protected] 
rcpt to: [email protected] 
data 

Sie erhalten entweder einen Code, um mit der Übertragung fortzufahren, oder Sie erhalten eine ungültige Nachricht des Empfängers.

+3

Ich denke, dass Sie finden, dass oft nicht funktioniert, weil Spammer es verwenden würden, um E-Mail-Adressen zu überprüfen. – cletus

+0

Eigentlich ist es ziemlich üblich - eine Menge Mail-Server (wie Exim) - verwenden Sie es, um den Absender zu validieren, bevor Sie neue Mail akzeptieren. Ich betreibe eine große Mailplattform, auf der jede Nachricht auf diese Weise validiert wird. – Chaos

+0

Wenn Sie dies tun, vergessen Sie nicht, spitze Klammern um die E-Mail-Adressen zu verwenden, wie vom SMTP-Standard gefordert: Mail von: <[email protected]> –

0

Nutzen Sie diese kostenlose Web-Service entweder über einen SOAP-Aufruf, GET oder POST. Alles, was Sie tun müssen, ist es eine E-Mail-Adresse füttern und es wird einen Booleschen Wert darstellt, ob oder nicht, es ist eine tatsächliche, lieferbar E-Mail-Adresse zurück:

http://www.webservicex.net/ValidateEmail.asmx?op=IsValidEmail

+0

Oh großartig, eine andere Möglichkeit für skrupellose Spammer, funktionierende E-Mail-Adressen zu erhalten. –

+0

Ich habe gerade diesen Service getestet und es scheint zu funktionieren. –

1

nachschlagen einen MX-Eintrag für die E-Mail-Adresse.

0

Es gibt viele Spam/Trash-Mailer (www.spam.la), mit denen Sie Mails an beliebige Adressen erhalten können. Daher schlage ich vor, sich nicht auf eine "gültige" E-Mail im üblichen Sinne zu verlassen. Vielleicht OpenID ist eine Option? Um nur nach einem "gültigen" Format zu suchen, können Sie vielleicht vorhandene Funktionen wie filter_var()/FILTER_VALIDATE_EMAIL nutzen.

1

Die folgende Regex passt E-Mail-Adressen:

^([\w-\.]+)@((\[[0–9]{1,3}\.[0–9]{1,3}\.[0–9]{1,3}\.)|(([\w-]+\.)+)) 
([a-zA-Z]{2,4}|[0–9]{1,3})(\]?)$ 

rashmipandit @ gmail.com - VALID

[email protected] - VALID

[email protected] - VALID

[email protected] - INVALID

[email protected] - INVALID

Wenn Sie komplexere gemäß RFC Richtlinien möchten, können Sie diese benutzen:

^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$ 
+0

Dadurch werden gültige E-Mail-Adressen zurückgewiesen, einschließlich solcher mit Plus- und Unterstrichen. – Quentin

+0

_ sind erlaubt, das zweite Muster entspricht den RFC-Richtlinien. –

3

Sie können eine E-Mail an die Adresse senden und den Benutzer durch Klicken auf einen Link bestätigen lassen.

+0

Manchmal ist die offensichtliche Lösung die beste Lösung :) Wie in anderen Antworten beschrieben, wird jeder andere (automatisierte) Weg wahrscheinlich sofort von Spammern missbraucht und funktioniert daher nicht. – MaxVT

0

Die meisten der oben genannten Antworten betrachten die Überprüfung der E-Mail-Adresse auf reguläre Ausdrücke. Um festzustellen, ob die E-Mail-Adresse gültig ist, müssen Sie eine Verbindung zum SMTP-Server herstellen und die Befehle senden. All details and PHP code is available here.

Verwenden Sie sparsam, Yahoo Server blockiert Sie möglicherweise, wenn Sie eine Menge Anfragen senden. Es wird auch dringend empfohlen, es zusammen mit den regulären Ausdrücken zu verwenden, die von anderen beschrieben werden.