phpmailer bricht in html tags um

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

  • phpmailer bricht in html tags um

    Hi,

    ich benutze den PHPMailer (http://phpmailer.sourceforge.net/) für ein Newslettersystem (1.37) und bin gerade auf folgendes Problem gestoßen:

    PHPMailer bricht die Texte automatisch nach einer gewissen Anzahl an Zeichen um. Blöderweise achtet er darauf nicht, ob sich der Zeilenumbrauch in einem HTML-Tag befindet, wodurch die Mails teilweise Darstellungsfehler haben (zB wenn er "<p \n >" produziert).

    Eine Idee wie man das beheben kann?

    Zur Info: Ich verwende folgenden Code zum Versenden:

    PHP-Code:
    $mail = new PHPMailer();

    $mail->From     $from_email;
    $mail->FromName $from_name;
    $mail->Mailer   "mail";
        
    $body_html $msg_html;    
    $body_text  $msg_plain;

    $mail->Body    $body_html;
    $mail->AltBody $body_text;
    $mail->IsHTML(true);
    $mail->AddAddress($to);
    $mail->Subject $subj;

    $mail->Send(); 

  • #2
    nachträglich mit preg_replace() die umbrueche aus html-tags entfernen

    Kommentar


    • #3
      Hm...einzige Lösung?

      PHPMailer ist ja doch ein relativ häufig benutztes Programm, wundert mich dass sonst noch niemand das Problem hatte bzw. es nicht schon einen fertigen Workaround gibt :/

      btw: Hast du zufällig eine regex dafür bei der Hand?

      Kommentar


      • #4
        ne grad nicht, sollte aber sowas sein wie

        /<([a-zA-Z])+ [\n] >/

        Kommentar


        • #5
          nachträglich mit preg_replace() die umbrueche aus html-tags entfernen
          Wann denn, nach dem abschicken?
          Oder erst beim Empfänger...


          Eigendlich dürfte der HTML Body nicht geteilt werden ...
          <glaskugel>
          Da hat irgendjemand in der class.phpmailer.php die Defaults verändert
          </glaskugel>
          Versuchs mal zusätzlich damit:
          PHP-Code:
          $mail->Encoding"base64"// steht evtl auf "quoted-printable"
          $mail->WordWrap=0// steht evtl auf >1 
          Wir werden alle sterben

          Kommentar


          • #6
            Original geschrieben von combie
            <glaskugel>
            Da hat irgendjemand in der class.phpmailer.php die Defaults verändert
            </glaskugel>
            Versuchs mal zusätzlich damit:
            PHP-Code:
            $mail->Encoding"base64"// steht evtl auf "quoted-printable"
            $mail->WordWrap=0// steht evtl auf >1 
            Die Defaults wurden nicht geändert, allerdings war als Encoding "8bit" eingestellt, was ja leider eine Zeilenbeschränkung von 1000 Zeichen hat. Base64 funktioniert wunderbar, aber weiß jemand wie es da mit der Clientunterstützung aussieht, insbesondere Webmail? Kann man base64 gefahrlos verwenden?

            quoted-printable hab ich noch nicht ausprobiert, ob das auch Probleme macht, erscheint mir aber funktionsfähig, da jeder Zeilenumbruch extra markiert wird...

            Kommentar


            • #7
              ... aber weiß jemand wie es da mit der Clientunterstützung aussieht, insbesondere Webmail? Kann man base64 gefahrlos verwenden?
              gegenfrage: kann man den 8-bit gefahrlos verwenden? wie sieht es dort mit der unterstützung aus?

              Kommentar


              • #8
                Wäre nicht so schlimm, da es wenigstens noch lesbar wäre, im Gegensatz zum base64
                Deswegen die Frage...aber werd wohl base64 verwenden, danke für eure Hilfe

                Kommentar


                • #9
                  was du meinst ist wohl die übertragung der sonderzeichen und nicht das, was du genannt hast (sicherheit und unterstützung bei clients).

                  und die ist bei allen kodierungen gleich (gut).

                  Kommentar

                  Lädt...
                  X