Patrick Schröder: PHP-Mail: Problem beim verschicken

Hallo ihr!

Ich habe für ein Forum einen Newsletter gestaltet, der im HTML-Format verschickt wird. Natürlich hat auch jeder Empfänger von Nur-Text-eMails die Möglichkeit alles zu lesen.

Mein Problem:
Die Mails sollen natürlich per Bcc verschickt werden, damit nicht jeder fremde eMail-Adressen sehen kann. Verschicke ich die Mail, wo drei feste eMail-Adressen angegeben sind, geht alles ohne Probleme.
Verschicke ich die Mail indem ich alles User aus der DB auslese, funktioniert es nicht. Am Auslesen liegt es definiv nicht, der Fehler ist eigentlich ausgeschlossen.

Hier vielleicht kurz die beiden Abfrage-Quelltexte:
------------------------------------
if ($auswahl == 'test') {
    $mailliste = 'Admin info@trti.de,';
    $mailadressen = "$mailliste Torsten mail1@mail.de, Patrick <mail2.mail.de>,";

$HEADER.="To: alle 6-forum-Mitglieder patrick@mail.de\n";
    $HEADER.="Bcc: $mailadressen\n";
}
------------------------------------
if ($auswahl == 'alle') {
    $sql = "SELECT username, useremail FROM bb1_user_table";
    $result = mysql_query($sql);
    $row = mysql_fetch_row($result);

$mailliste = 'Admin info@mail.de,';
    while($row = mysql_fetch_array($result)) {
        $username = $row['username'];
        $useremail = $row['useremail'];

$mail1 = "$username <$useremail>,";
        $mailliste = "$mailliste $mail1";
    }
    $mailadressen = $mailliste;

$HEADER.="To: alle forum-Mitglieder patrick@mail.de\n";
    $HEADER.="Bcc: $mailadressen\n";
}
------------------------------------

Gibt es eine vielleicht eine Bcc-Begrenzung? Immerhin sind beim Abschicken rund 6.500 eMail-Adressen im Bcc.

Falls sich jemand wundert, warum ich die $mailliste mit einer eMail-Adresse vorher festgelegt habe, ist, dass die erste Zeile der DB partu nicht ausgelesen wird (bei PHP-DB-Abfrage).
Die Mail-Adressen sind natürlich nicht die reellen.

Wer kann mir weiterhelfen? Die Quelltexte sehen gleich aus... die DB-Abfrage wird genauso ausgegeben, wie ich oben im test die drei Adressen angegeben habe. Die eine kommt an, die andere nicht.

Gruß Patrick

  1. hallo du wo ist denn dein mail befehl?
    baust du  dir denn den kompletten mail befehl als variable zusammen?
    wo baust du den header für die html mail zusammen?
    hast du dir schon einmal deine variablen ausgeben lassen?
    wie sieht es den aus wenn du einen statischen mail befehl mit bcc schreibst.
    auch eine gute art der überprüfung ist es dein mail script in der shell auszuführen.
    dort würdest du auch die fehlermeldungen des mail servers sehen.

    1. hallo du wo ist denn dein mail befehl?

      Da alles ohne Probleme funktioniert, bis auf den Bcc-Teil mit entsprechend vielen Adressen, habe ich den kompletten Rest der Mail hier weggelassen. Der würde hier mehr irritieren, als weiterhelfen. Die wichtigen Auszüge habe ich ja gezeigt, worum es geht.

      baust du  dir denn den kompletten mail befehl als variable zusammen?

      Wenn ich dich richtig verstehe, könnte man so sagen, hat bisher wunderbar funktioniert. Keinerlei Problem... außer jetzt eben bei der Masse der Mails.

      wo baust du den header für die html mail zusammen?

      Im Rest des Scriptes. Wie gesagt, dort past und stimmt alles. Die Mails an wenige funktionieren ohne weiteres.

      hast du dir schon einmal deine variablen ausgeben lassen?

      Ja. Deswegen kann ich ja ruhigen Gewissens sagen, dass die Optik / bzw. die Anordnung der eMail-Adressen im Bcc soweit okay ist.

      wie sieht es den aus wenn du einen statischen mail befehl mit bcc schreibst.

      Das funktioniert... wobei ich die Mail an über 6.000 Leute nicht statisch versucht habe abzuschicken. Statisch ist ja auch das test-Beispiel, das wudnerbar funzt.

      auch eine gute art der überprüfung ist es dein mail script in der shell auszuführen.

      Nu bin ich mal wieder an nem Punkt, wo ich wieder was neues kennenlerne? Wie geht das? Bzw. wo kann ich das Script so ausführen lassen, als das ich auch Fehler im Hintergrund entdecken kann?

      dort würdest du auch die fehlermeldungen des mail servers sehen.

      Logisch, aber wie geht das? Ich kann zwar einigermaßen mit PHP usw. umgehen, aber Experte bin ich auch nicht. Ich lerne auch von Tag zu Tag immer wieder, teils auch banale Dinge, die ich vorher halt noch nicht wusste.

      Gruß Patrick

      1. ich schätze du hast ein linux system.
        in deine php seite folgendes als erstes eintrage.
        #!/usr/bin/php das ist der zeiger auf den interpreter
        jetzt deinen php code.
        jetzt einen terminal oder in die bash wechseln.
        in das verzeichniss deines scriptes wechseln
        dein script mit ./script.php starten das wars.
        fehler meldungen sollten erscheinen wenn es welche gibt.

        1. jetzt einen terminal oder in die bash wechseln.

          Hmmm.... soweit alles verstanden, aber terminal oder bash? Sagt mir gar nix...

          in das verzeichniss deines scriptes wechseln
          dein script mit ./script.php starten das wars.
          fehler meldungen sollten erscheinen wenn es welche gibt.

          Wunderbar... ich danke dir!
          Werde das soweit gleich mal ausprobieren und schauen, was dabei herauskommt! Drück mir die Daumen, dass ein Fehler kommt! Melde mich nachher nochmal.

          thx

          Patrick

  2. hi,

    Falls sich jemand wundert, warum ich die $mailliste mit einer eMail-Adresse vorher festgelegt habe, ist, dass die erste Zeile der DB partu nicht ausgelesen wird (bei PHP-DB-Abfrage).

    und ob die ausgelesen wird - nur wohl an der falschen stelle/zu früh.

    $sql = "SELECT username, useremail FROM bb1_user_table";
        $result = mysql_query($sql);
        $row = mysql_fetch_row($result);

    hier holst du dir die erste zeile - wofür, ist allerdings unklar. du scheinst sie gar nicht zu verwenden ...

    $mailliste = 'Admin info@mail.de,';
        while($row = mysql_fetch_array($result)) {

    hier startet jetzt deine schleife über den rest der DB-ergebnismenge - da ist der erste datensatz aber schon "weg".

    gruss,
    wahsaga

    1. Hallo wahsaga

      Falls sich jemand wundert, warum ich die $mailliste mit einer eMail-Adresse vorher festgelegt habe, ist, dass die erste Zeile der DB partu nicht ausgelesen wird (bei PHP-DB-Abfrage).
      und ob die ausgelesen wird - nur wohl an der falschen stelle/zu früh.

      $sql = "SELECT username, useremail FROM bb1_user_table";
          $result = mysql_query($sql);
          $row = mysql_fetch_row($result);
      hier holst du dir die erste zeile - wofür, ist allerdings unklar. du scheinst sie gar nicht zu verwenden ...

      Okay...dann hab ich bei den Abfragen wohl ne Kleinigkeit missverstanden.. Danke. Zumindest schon mal ein Problem gelöst... aber wie kann ich denn dann dort die Schleife starten?

      $mailliste = 'Admin info@mail.de,';
          while($row = mysql_fetch_array($result)) {
      hier startet jetzt deine schleife über den rest der DB-ergebnismenge - da ist der erste datensatz aber schon "weg".

      Ich denke, nu hab ich verstanden, wo das Problem des ersten Datensatzes ist. Aber hast du auch ne Idee, wo das Problem mit dem wegschicken kommen könnte?

      Gruß Patrick