Claudia B.: Newsletterversand - Serverschonend gestalten - Profis gesucht

In meinem Newslettersystem befinden sich mittlerweile über 1.000 Abonennten. Bei der letzten Aussendung hat sich gezeigt, dass der Server das nicht ohne Probleme schafft. Der Cache ist kurzerhand übergelaufen.

Bislang führe ich die Funktion mail() in einer Schleife 1.000 mal aus.

Welche Variante könnt ihr empfehlen, um die Sache bisschen serverschonender zu gestalten?

a) jeweils 100 Mails mit Verzögerung (20 sec.) versenden
b) den Abnonenntenbestand (1.000) auf 2 x 500 aufteilen und versenden

Hier der Abschnitt für die Versendung

if($anz >= 1){
      $newstext = "$newstext\n$foottext";
      for ($i = 0; $i <= $anz-1; $i++) {
        $email[$i] = str_replace ("\n", "", $fcontent[$i]);
        mail($email[$i], $newstitel, $newstext,"From: $from\nReply-To: $from");
      }

Wie könnte z. B. Variante A in PHP serverschonend aussehen?
Soll ich mit der Funktion sleep(20) arbeiten, oder gibt es eine bessere Möglichkeit?

Vielen Dank für eure Hilfe

Grüße...

Claudia B.

  1. a) jeweils 100 Mails mit Verzögerung (20 sec.) versenden
    b) den Abnonenntenbestand (1.000) auf 2 x 500 aufteilen und versenden

    if($anz >= 1){
          $newstext = "$newstext\n$foottext";
          for ($i = 0; $i <= $anz-1; $i++) {
            $email[$i] = str_replace ("\n", "", $fcontent[$i]);
            mail($email[$i], $newstitel, $newstext,"From: $from\nReply-To: $from");
          }

    Wie könnte z. B. Variante A in PHP serverschonend aussehen?
    Soll ich mit der Funktion sleep(20) arbeiten, oder gibt es eine bessere Möglichkeit?

    Viele sind der Meinung, ein erneuter Aufruf des Scripts
    wäre die beste Lösung:

    zb.
    mail($a,$b,$c,$d);
    HEADER("LOCATION:mailversand.php?anzahl=$position=$i");

    Ich persönlich versende ab und zu 30.000 Mails auf einmal,
    das mache ich mit BCC(40 stck.) und der Function flush()+sleep().

    Gruss Nikki

  2. Hallo

    Gibt es nicht die Möglichkeit mehrer Adressen anzugeben in der Mailfunktion? So à la "abc@ggg.com; ggg@abc.com". Ich weiss nicht genau, wie das SMTP Protokoll einen solchen Aufruf verarbeitet aber dies könnte evtl. eine Temposteigerung bringen.

    Gruss

    Michael

    1. Hi,

      ja die gibt es!! Man könnte dann alle 1000 Einträge in Array speichern, dieses dann mit ";" imploden und dann einmal die mail() aufrufen!

      Problem ist nur, dass dann jeder Abonnent, alle anderen 999 mail addressen sieht!

      evtl. kann man dann die adressen in BCC-Feld schreiben...

      Frage ist aber auch ob das serverschonender ist!

      GRuß
      Christian