@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:
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