PHP Mails beim Verschicken sammeln

  • Themenstarter Themenstarter moritz115
  • Beginndatum Beginndatum
M

moritz115

Hallo,

es gibt bei PHP ja eine Mailfunktion.


PHP:
<?php
$mail_empfaenger="Werde ich dann aus MySQL holen";
$mail_absender=Werde ich dann aus MySQL holen;
$betreff="Eine Testmail";
$text="Mein Name ist $Vorname $Nachname, von Beruf bin ich $Beruf.
Rufen Sie mich mal an unter der Nummer $Telefon. \n Mit freundlichen Grüssen";
mail(mail_empfaenger, $betreff, $text,"from:$mail_absender");
?>

Das war jetzt ein Beispielscript zum Automatischen Mailversand nach einer Aktion. Da auf meiner Homepage demnächst viele Mails versand werden, zwar warscheinlich nicht so viele, das die Begrenzung meines Server erreicht ist, habe ich eine Idee.
Kenn man nicht die Mails, die Versand werden, an eine zweite Seite auf meinem Server "sammeln". Also das alle Mails dort hin geleitet werden und dann immer z.B. nur 20 Stück in einer Minute versand werden? Aber so, das auch von mehreren Mailformularen die Mails dort ankommen. Dafür muss man dann ja ein Script coden, wenn dies Funktioniert. Und die Mails müssen versand werden, ohne das jemand auf dieser "sammelseite" sein muss, aber kann.


Hat da jemand eine Idee und kann mir vielleicht auch etwas programmieren?

Vielen Dank im Vorraus
moritz115
 
hmm also sammeln kannst du die Mails ja in der Datenbank.

Eine Pause beim Verschicken kannst du mit sleep() realisieren.
Hab dir mal ein kleines Beispiel gemacht.

PHP:
$Anzahl = 40;
$i= 1;
while($i <= $Anzahl){
	if($i == 20) { echo'pause<br>';sleep(10); }
echo 'jetzt ist Zeile '.$i.' drann<br>';
$i++;
flush();
}
 
Hallo,

hört sich gut an. Läuft das auch, wenn mein PC aus ist und ich die "versendeseite" nicht geöffnet habe? (müsste ja, da PHP serverseitig ist).
 
Hi,
so einfach wird das leider nicht gehen.

1. Der PHP-Code der hinter einer Seite steckt wird ja nur ausgeführt, wenn jemand grad die Seite LÄDT, also dort ankommt (nicht wenn jemand auf der Seite IST, wenn du die Seite eine Stunde auflässt, wird kein PHP Code mehr abgearbeitet)
2. Mann kann eine Mail nicht an eine Seite schicken. Man kann die Daten für die Mail in die Datenbank speichern anstatt sie direkt rauszuschicken. Eine andere Seite kann die Daten dann aus der Datenbank laden und alle Mails, die in der Datenbank stehen mit und mit rauss.chicken.
3. Es muss also einen Prozess geben, der ständig auf dem Server läuft, schaut ob Mails in der Datenbank stehen und diese ggf. mit und mit rausschickt. Der Webseitenbesucher darf davon natürlich nichts mitbekommen, er soll also nicht extra eine Seite aufrufen müssen.

Das Ganze geht recht gut mit einem Cronjob. Falls du keinen Serverzugriff auf deine crontab-Datei hast, gibt es auch Dienste, die für dich regeläßig ein Script (eine Seite) aufrufen.
http://www.cronjob.de/ oder http://cronjob.selfphp.de/
Hab mich bisher nicht damit beschäftigt und kenne leider die Vor-/Nachteile der Anbieter nicht.

Der PHP-Code, der dann aufgerufen wird, könnte ungefähr so aussehen, wie der Vorschlag von vandamp.

Viele Grüße
 
Zurück