Authentizität eines E-Mail Accounts per PHP(5) checken |
||
---|---|---|
#0
| ||
31.05.2006, 21:40
Member
Beiträge: 5291 |
||
|
||
01.06.2006, 13:52
Member
Beiträge: 2176 |
#2
vielen Dank, kann man immer gebrauchen
Was das prüfen der Existenz des Postfachs per telnet befehlen angeht haben die Provider mitlerweile glaube ich einen Riegel auf Grund der Spammer vorgeschoben? - oder? (müsste man mal testen) Greetz Lp Dieser Beitrag wurde am 01.06.2006 um 14:05 Uhr von Laserpointa editiert.
|
|
|
||
01.06.2006, 14:15
Member
Themenstarter Beiträge: 5291 |
#3
@Laserpointa
Code public function checkmail($email, $tld) {Hier nochmal die editierte Version: $email wird jetzt auch nach leerstellen gescannt. Das "public" musst du natürlich wegnehmen wenn du das ganze nicht in einer Klasse benutzt. Zitat Was das prüfen der Existenz des Postfachs per telnet befehlen angeht haben die Provider mitlerweile glaube ich einen Riegel auf Grund der Spammer vorgeschoben? - oder? (müsste man mal testen)Ne das kannst du nicht unterbinden, auch als Provider nicht. Die Frage ist nur wie man sowas einfach und Ressourcen sparend umsetzt. Man kann ja nicht bei jeder Mail die gecheckt werden soll sich über php per telnet auf den server (sofern vorhanden) einloggen und dann eine Test-Mail schreiben, dass halte ich für zu übertrieben. __________ E-Mail: therion at ninth-art dot de IRC: megatherion @ Freenode |
|
|
||
02.06.2006, 13:39
Administrator
Beiträge: 1743 |
#4
Hi ihr,
diese Funktion geht beim verifizieren der Emailadresse noch ein paar Schritte weiter: Code function checkEmail($email) {+ Code $email = trim($_POST['email']);Quelle: folgende Anleitung wie ich mich jetzt allerdings direkt mit dem Mailserver verbinde und frage ob der Account existiert ist mir auch noch ein Rätsel und würde mich auch interessieren! -> edit Lsg. __________ Gruß Lukas |
|
|
||
02.06.2006, 13:58
Member
Themenstarter Beiträge: 5291 |
#5
@Lukas
Zitat if(preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)) {Ja hab ich auch schon dran gedact, aber sind nicht sowieso alle Zeichen in einer E-Mail (bis auf leerstellen und kommas) erlaubt? Dann lohnt sich preg_match nicht. Zitat if(!fsockopen($domain,25,$errno,$errstr,30))Ja ok fsockopen() ist natürlich nützlich um zuchecken ob man sich auch auf den SMTP Server verbinden kann. Danke - ich werde das mal implementieren. Edit: Hmm preg_match() it langsamer und funktioniert nicht. preg_match() gibt einen integer rückgabe Wert und kein boolean - hab versucht mit, if(preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)>0) funktioniert aber auch nicht. Zitat list($username,$domain)=split('@',$email);Ebenfalls langsamer als preg_split() aber wenn man perl regular expressions nicht benötigt ist explode() die bessere Wahl siehe: http://de3.php.net/manual/en/function.split.php Nur fsockopen() ist hier von Vorteil. __________ E-Mail: therion at ninth-art dot de IRC: megatherion @ Freenode Dieser Beitrag wurde am 02.06.2006 um 14:13 Uhr von Xeper editiert.
|
|
|
||
02.06.2006, 14:31
Administrator
Beiträge: 1743 |
#6
Zitat Xeper postetegerade nochmal überflogen der preg_match bei dem Code aus Post #4 ist mangelhaft. Wenn man das ganze perfektionieren möchte setzen die RFC Normen einige Grenzen bzw. Einschränkung der Zeichen: Zitat Der lokale Teil muss eine bezüglich "domain" eindeutige Zeichenkette sein. Diese Zeichenkette darf nach RFC 2822 nur Buchstaben und Zahlen sowie bestimmte weitere Zeichen enthalten: A-Za-z0-9.!#$%&'*+-/=?^_`{|}~. Andere Zeichen, wie z. B. Leerzeichen, können benutzt werden, wenn local-part in doppelte Anführungsstriche eingeschlossen wird oder das Zeichen durch einen umgekehrten Schrägstrich (\) maskiert ist (z. B. ", @, :, . Kommentare können innerhalb von runden Klammern ebenfalls eingefügt werden. Alle Zeichen oberhalb des ASCII-Codes 127, also auch Umlaute, sind generell verboten. Am Anfang und Ende der Zeichenkette darf sich kein Punkt befinden. __________ Gruß Lukas |
|
|
||
02.06.2006, 14:38
Member
Beiträge: 3306 |
#7
Ich denke eine einfache Möglichkeit zu überprüfen ob eine E-Mail Adresse existiert gibt es nicht. Gäbe es sie würde sie sofort von Spammern missbraucht werden. Ich hab auch schon oft nach so einer Möglichkeit gegoogelt aber nichts dazu gefunden.
__________ Bitte keine Anfragen per PM, diese werden nicht beantwortet. |
|
|
||
10.06.2006, 12:10
Administrator
Beiträge: 1743 |
#8
um das Thema abzuschliessen:
hab mal ein wenig gestöbert, und die Befehle für die gewünscht Aktion gefunden. Diese sind aber natürlich wie von Euch schon erwähnt bei den heutigen grossen Mailern deaktiviert. Zitat Das SMTP-Protokoll unterstützt einige weitere Befehl, die nicht im Rahmen einer E-Mail-Übertragung verwendet werden:PHP Coding Beispiele mit VRFY: http://koders.com/?s=VRFY&_%3Ala=PHP + siehe Anhang Test/Beweis das es bei den Mailern heute deaktiviert ist: http://www.gaijin.at/olsmailcheck.php Anhang: verifyemail_lib.txt __________ Gruß Lukas |
|
|
||
Habe heute eine kleine Funktion geschrieben die, die Authentizität eines E-Mail Accounts sicherstellt
PHP Code
Oder zu finden unter:http://coruscant.ninth-art.de/websvn/filedetails.php?repname=php&path=%2Fmaintenence.inc.php&rev=0&sc=0
Diese Funktion checkt einen bestimmten string (die E-Mail) und akzeptiert auch als zweites Argument ein array an TLDs.
Außerdem wird der String nach mehrdeutigen TLDs (.de.de oder .com.de oder derartiger Blödsinn) abgesucht.
Die domain selber wird auch noch auf einen bestehenden MX record hin überprüft.
Letztes Problem bleibt, hat hier jemand eine Idee wie ich auch abchecken kann ob ein Postfach bla@ existiert?
Dafür müßte ich mich ja erst auf dem bestehenden SMTP Server einloggen?
PS.: Code ist sowieso GPL deswegen klaut ihn ruhig
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode