E-Mail adressen Validieren

dadevelopa

Mitglied
Hi zusammen.

ist es in PHP irgendwie möglich die E-Mail adressen zu Validieren und herauszufinden, welche ein Gültiges Format haben und welche nicht?

Ausserdem? Gibt es eine maximale Anzahl von E-Mails die die Mail-Funktion verschicken kann?
Was wenn 800 E-Mails verschikt werden müssen? Geht das damit?

Danke schonmal im voraus.
 
Es gibt bestimmt 10000 reguläre Ausdrücke für eMails im Netz Einfach mal googeln.

Eine Beschränkung bei mail() ist mir nicht bekannt, aber Massenmails wie z.B. Newsletter sollte man anders lösen, besonders, weil sonst jeder Empfänger sieht, wer die Mail sonst noch bekommen hat, und da freut sich bestimmt niemand drüber.
 
Oliver Gringel hat gesagt.:
Es gibt bestimmt 10000 reguläre Ausdrücke für eMails im Netz Einfach mal googeln.

Eine Beschränkung bei mail() ist mir nicht bekannt, aber Massenmails wie z.B. Newsletter sollte man anders lösen, besonders, weil sonst jeder Empfänger sieht, wer die Mail sonst noch bekommen hat, und da freut sich bestimmt niemand drüber.


Richtig, aber soweit ich weiss kann man die einzelnen E-Mail Addressen doch auch als BCC angeben oder irre ich mich da?

Ausserdem, was passiert, wenn eine ungültige E-Mail Addresse in der Liste ist?
 
Stimmt, mit BCC sieht man die anderen Empfänger nicht.

Wenn eine ungültige Adresse dabei ist, wirst du ne Undelivered Mail vom Mailer-Deamon kriegen.
 
Ich hatte mal zum Üben ein Skript namens mailbomb.php geschrieben (keine Angst, habe ich nur mit einem lokalen Mailserver getestet). Da hat er auf 'nem 500 Mhz Celeron pro Aufruf sicher 100 einzelne Mails, mit eigenem Empfänger geschafft. Wenn er seine 100 Mails geschickt hat, habe ich einfach eine Weiterleitung mit neuem Offset, wie bei einer Blätterfunktion aufgerufen. Damit konnte ich dann auch mit mail() beliebig viele E-Mails verschicken. Die Weiterleitung darf natürlich nicht gesendet werden, wenn der Offset größer ist als die Anzahl der Empfänger, sondern dann sollte er "Fertig" ausgeben.

Pass auf, wenn Du sowas testet. Ich habe immer an dieselbe lokale eigene E-Mail-Adresse geschickt, mein Eudora musste ich nach dem Empfang neu starten, erst beim 2. starten hat er mir die Mails angezeigt. Vorher den Incoming-Ordner leeren, sonst wird es anstrengend 30.000 Mails zu löschen, ohne eine echte zu verlieren :)

Gruß hpvw
 
hier haste ne funktion zur gültigkeitsprüfung:
PHP:
if (preg_match ("/(^|\s)([a-zA-Z0-9_-]+)(\.[a-zA-Z0-9_-]+)*(@)([a-zA-Z0-9_-]+)(\.[a-zA-Z0-9_-]+)*(\.)([a-zA-Z]{2,4})(\s|$)/im", $emailaddr))
{
  //ok
}
du kannst in einer schleife soviele mails rausjagen, wie der server verkraftet.
dabei spielt natürlich die leistung der maschine die hauptrolle - demnach lässt sich das schlecht pauschalisieren
 
Mit dieser Funktion unten kann der User immer noch sowas "______.----@----.xx" unsinniges eingeben. Wie kann man den unten verwendeten Ausdruck noch verbessern? Vielleicht ne Kombination mit der herrkömmlichen Programmierung? Kann jemand helfen?

PHP:
       ^[a-zA-z0-9-]+(\.[a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)[a-zA-Z]{2,3}$



Danke im Voraus
 
Hi!

Schicke dem Benutzer eine "Opt-In"-E-Mail, mit einem Bestätigungs-Link. Wenn über diesen Link bestätigt wurde, kannst du sicher gehen, dass die E-Mail-Adresse zum Zeitpunkt der Eingabe existiert.

Theoretisch könntest du die TLD der Mail-Adresse mit einer Liste aller verfügbaren TLDs abgleichen. Sobald eine neue dazu kommt, müsstest du die aber in Kleinarbeit wieder einpflegen...

Mamphil
 
Zurück