Marcel: PHP MailFunktion

Hallo,

habe folgenden Quellcode:

if ($kommentar != "") {
  $beitrag = file("test.txt");
  krsort($beitrag);
  foreach($beitrag as $ausgabe)
  {
    /*Hier will ich aus txt auslesen*/
     $ausgabe = stripslashes($ausgabe);
      $zerlegen = explode("|", $ausgabe);
      $email_freund = $zerlegen[0];
      $name_freund = $zerlegen[1];
      $ps = $zerlegen[2];

$email_to = "$name_freund<$email_freund>";
      //Absender-Email
      $email_from_mail = "absener@mail.de";
      //Absender-Name
      $email_from_name = "Absendername";
      //Betreff in der Mail
      $email_betreff = "Betreff der Nachricht";

$kommentar = "Hallo " . $name_freund. ", \n" . $kommentar;
      $kommentar = $kommentar . "\n \n". $ps;
      $header="From:$email_from_name<$email_from_mail>\n";
      mail($email_to,$email_betreff,$kommentar,$header);
  }
}

Ich habe nun das Problem, dass nicht eine Mail verschickt wird für jeden Adressaten pro Zeile, sondern von oben nach unten, d.h. der erste bekommt zusätzlich zu seiner auch alle anderen Anreden und persönlichen Sachen mitgeteilt. Das bedeutet nur der letzte in der txt bekommt das, was er bekommen soll.

Wäre für Hilfe und eine Mail dankbar!

Gruß,
Marcel

  1. Hallo,

    if ($kommentar != "") {

    mal ganz davon abgesehen, dass ich mich mit PHP nicht auskenne, aber hierfür gibt es doch bestimmt ne bessere Lösung oder?

    Mit != vergleicht man doch Zahlen oder? Für Strings (Zeichen) nutzt man doch bestimmt was anderes!

    In Shell überprüft man beispielsweise eine Variable, ob sie gefüllt ist mit

    if [ -z "$var" ] ; then

    in Perl wohl mit

    if(!$var) {

    oder schlechtenfalls mit

    if($var ne "") {

    Mfg,
    Jonny

    1. Moin!

      Mit != vergleicht man doch Zahlen oder? Für Strings (Zeichen) nutzt man doch bestimmt was anderes!

      Es geht um PHP, nicht um Perl oder so. Wenn du dich damit nicht auskennst, wäre es eine gute Idee, wenn du dich entweder so informierst, dass du dich auskennst, oder lieber nichts schreibst, wenn es doch nur auf wilden Vermutungen basiert.

      - Sven Rautenberg

      1. Hallo Sven,

        Mit != vergleicht man doch Zahlen oder? Für Strings (Zeichen) nutzt man doch bestimmt was anderes!

        Es geht um PHP, nicht um Perl oder so. Wenn du dich damit nicht auskennst, wäre es eine gute Idee, wenn du dich entweder so informierst, dass du dich auskennst, oder lieber nichts schreibst, wenn es doch nur auf wilden Vermutungen basiert.

        Hastest du mein Fragezeichen entdeckt?

        Danke.

        Mfg,
        Jonny

        1. Moin!

          Hastest du mein Fragezeichen entdeckt?

          "...oder lieber nichts schreibst, wenn es doch nur auf wilden Vermutungen basiert."

          Wenn du selbst schon der Ansicht bist, dass das, was du schreibst, besser als Frage formuliert sein sollte, weil du dir absolut nicht sicher bist, und du außerdem nur allgemeines Geschwafel über Programmiersprachen hinzufügst, die hier gar nicht gefragt waren, dann wäre Schweigen zu diesem Problem wirklich hilfreicher gewesen.

          Nur weil jemand eine Frage gestellt hat, MUSST du nicht antworten. Antworte dort, wo du dir einigermaßen sicher bist, dass du etwas weißt und hilfreich zum Problem beitragen kannst. Also beispielsweise bei Fragen zu Perl. Davon hast du sicher mehr, und auch das Forum. Und dann votet man deine Antworten vermutlich auch als hilfreich.

          - Sven Rautenberg

          1. Hallo Sven,

            Antworte dort, wo du dir einigermaßen sicher bist, dass du etwas weißt und hilfreich zum Problem beitragen kannst. Also beispielsweise bei Fragen zu Perl. Davon hast du sicher mehr, und auch das Forum.

            Sorry, aber das finde ich Quark! Es gibt hier unendlich viele Postings die weder hilfreich noch 100% sind (inkl. Admins)! Ich habe den Vergleichsoperator != zunächst als falsch eingestuft, weil dieser doch meistens für Zahlen gebraucht wird. Da ich mir aber nicht sicher war, habe ich ein Fragezeichen drangehängt. Meine Art von Hilfe war wohl in diesem Fall nicht deinen Ansprüchen gerecht. Aber gut, ich halte mich zurück.

            Und dann votet man deine Antworten vermutlich auch als hilfreich.

            von 1000 Postings... wie oft wird da wohl von der Bewertung gebrauch gemacht?

            Nur weil jemand eine Frage gestellt hat, MUSST du nicht antworten.

            stimmt. Ich halte mich

            Mfg,
            Jonny

  2. Hallo Marcel,

    mach bitte folgenden Test:

    $a="for|explode";

    for($i=0;$i<10;$i++)
       {
       $f=explode('|',$a);
       }

    print_r($f);

    Gruß aus Berlin!
    eddi

  3. Moin!

    foreach($beitrag as $ausgabe)
      {

    [...]

    $kommentar = "Hallo " . $name_freund. ", \n" . $kommentar;
          $kommentar = $kommentar . "\n \n". $ps;

    [...]

    }

    An dieser Stelle wird an den Kommentar was angehängt. In jedem Schleifendurchgang. Immer mehr. Vielleicht solltest du den Kommentar mal leermachen, bevor du die erste (und jede weitere) Mail verschickst.

    Vorschlag:
    Setze den Befehl
    error_reporting(E_ALL);
    an deinen Skriptanfang, dann wird dir die Benutzung von nichtinitialisierten Variablen (so wie in diesem Fall) gemeldet. Es ist guter Programmierstil, wenn ein Skript vollkommen ohne Meldungen abläuft. Den Aufwand solltest du in jedem Fall treiben!

    - Sven Rautenberg