Ankündigung

Einklappen
Keine Ankündigung bisher.

Foreach Schleife mir PHP Mailer

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Foreach Schleife mir PHP Mailer

    Hey,
    ich verwende den PHPMailer um Newsletter zu versenden.
    Damit alle Mails rausgehen verwende ich eine Foreach Schleife:

    PHP-Code:
    foreach ( $users as $user ){    
    $text preg_replace("/username/",$user['username'],$text);
    $mail->SetFrom('MAILADRESSE''ABSENDER');
    $mail->AddAddress($user['email'], $user['email']);        
    $mail->Subject $title;
    $mail->AltBody 'Um die Mail zu lesen benutze bitte ein HTML kompatibles Mail Programm!'// optional - MsgHTML will create an alternate automatically
    $mail->MsgHTML($text);
    $mail->Send();

    Allerdings bekomme ich dann immer anstatt einer Mail gleich 8 oder mehr ...

    Könnt ihr mir helfen und sagen was daran jetzt falsch ist?

    Vielen Dank!

  • #2
    Du hast vergessen das Objekt neu anzulegen! Dadurch wird das immer an die Absender geschickt. Benutze entweder $mail->ClearAddresses(); oder leg das objekt jedes mal neu an

    Kommentar


    • #3
      Hey,
      vielen Dank jetzt geht es fast.

      Der Code:
      PHP-Code:
      foreach ( $users as $user ){        
      $text preg_replace("/username/",$user['username'],$text);
      $mail->SetFrom('MAIL ADRESSE''ABSENDER');    
      $mail->AddAddress($user['email'], $user['username']);
      $mail->Subject $title;
      $mail->AltBody 'Um die Mail zu lesen benutze bitte ein HTML kompatibles Mail Programm!'// optional - MsgHTML will create an alternate automatically
      $mail->MsgHTML($text);                        
      $mail->Send();
      $mail->ClearAddresses();

      Jetzt wird aber username immer mit dem Benutzernamen mit ID 1 also eben dem 1. Eintrag in der DB ersetzt - warum?

      Die Variable $text wird doch von der foreach Schleife immer neu überschrieben (samt preg_replace)?!?

      Kommentar


      • #4
        Nach dem ersten Schleifendurchlauf steht in $text kein "/username/" mehr drin - du hast $text schließlich mit der neuen Version ersetzt. Also kann preg_replace auch nix mehr ersetzen.
        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

        Kommentar


        • #5
          Hey,
          oh jetzt wo dus sagst fällts mir auch auf mhm
          und wie könnte ich das dann lösen?

          Ok ich könnte den Text am Ende der Schleife wieder zum Grundtext zurückschreiben lassen aber gibt es da nicht eine schönere Variante?

          Kommentar


          • #6
            PHP-Code:
            $umschreibText $text;
            $umschreibText preg_replace("/username/",$user['username'],$umschreibText);
            [...]
            $mail->MsgHTML($umschreibText); 
            so bleibt $text immer gleich :P
            ACHTUNG!!! SIGNATUR!!!
            PHP-Code:
            var_dump($gehirn); exit; 
            0 ??? WTF ? nervtag.de | freutag.net | friendmetr.com

            Kommentar


            • #7
              Hey,
              ja das war ja das was ich meinte ...
              jetzt habe ich aber ein anderes Problem:
              wenn ich einen kompletten Newsletter (also von <html> über <head> bis zu <body>) verschicken möchte ersetzt php mailer alle " mit \" jetzt wird dadurch natürlich der ganze Style und so nicht angezeigt also keine Bilder und Co. In der Text Variable steht es als normales " und durch den Versand wird es dann ersetzt was ich aber nicht möchte, was kann ich dagegen tun?
              (Seite 1 Eingabe in TinyMCE (Textbox) sendet an Seite 2 via Post: $_POST['text'])

              Vielen Dank!

              -------------------------

              OK habe einfach stripslashes($text) angewendet. Jetzt wird es in Thunderbird schon mal richtig angezeig. Allerdings in Windows Live Mail nicht. Kann es sein das Windows Live Mail keine Style Attribute anzeigen kann?

              Wie kann ich das lösen?

              Kommentar

              Lädt...
              X