Welcome Mail ohne CarriageReturn? (ISPC 2.2.21)

Dieses Thema im Forum "Entwicklerforum" wurde erstellt von sqrt, 15. Feb. 2008.

  1. sqrt

    sqrt New Member

    Hallo zusammen!

    Mir ist eben aufgefallen, das die "Welcome mail" an neu angelegte Kunden unter Windows ohne korrekte Zeilenumbrüche angezeigt werden, wenn man das "Welcome Mail"-Formular als Anbieter unter einem System ausfüllt, das als Zeilenumbruch nur ein Newline-Zeichen verwendet anstatt der unter Windows nötigen zeichen "CarriageReturn" und "Newline"...

    Leider habe ich gerade kein Windows-System zur Verfügung, aber ich glaube, der folgende Patch könnte helfen?

    Code:
    --- /home/admispconfig/ispconfig/lib/classes/ispconfig_isp_kunde.lib.php.orig   2008-02-15 21:43:29.000000000 +0100
    +++ /home/admispconfig/ispconfig/lib/classes/ispconfig_isp_kunde.lib.php        2008-02-15 22:29:02.000000000 +0100
    @@ -145,6 +145,8 @@
     
             if($kunde["kunde_email"] != "" && eregi("^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$", $kunde["kunde_email"]) && $absender_email != "" && eregi("^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$", $absender_email) && $absender_name != "" && $subject != "" && $message != ""){
     
    +          $message = str_replace("\n", "\r\n", $message);
    +          $message = str_replace("\r\r", "\r", $message);
               $message = str_replace("%%%USER%%%", $kunde["webadmin_user"], $message);
               $message = str_replace("%%%PASSWORD%%%", $kunde["webadmin_passwort"], $message);
               $message = str_replace("%%%FIRST_NAME%%%", $kunde["kunde_vorname"], $message);
    
    Gruß,
    Andreas
     
  2. Till

    Till Administrator

    Mit welchem Mailclient hast Du das Problem denn gehabt?
     
  3. sqrt

    sqrt New Member

    MS-Outlook hat keine Umbrüche angezeigt ...
     
  4. Till

    Till Administrator

    Normalerweise sollte jeder Mailclient beide Umbruch-Varianten kenne. Wenn man nämlci \r\n nimmt, machen wiederum andere mailclients gelich 2 Zeilenumbrüche daraus. Saher hatten wir das irgendwann auf \n geändert und mit der Outlook Version die ich damals zum Testen genommen hatte, wurde es auch korrekt angezeigt.
     
  5. sqrt

    sqrt New Member

    Ja, so kenne ich das eigentlich auch. Ich weiß noch nicht so genau, was da schiefgegangen ist. Thunderbird auf dem Mac oder OpenBSD sowie mutt haben die Mail korrekt angezeigt. Ich werde das Phänomen aber mal weiter beobachten.

    Mein Quick-and-Dirty-Patch da oben war nur mal eine erste Idee... aber Du hast Recht. Eigentlich sollte das nicht nötig sein...
     
  6. flipkick

    flipkick New Member

    Hallo ihr beiden,

    ich habe beim Testen etwas ganz anderes herausgefunden. Eine Willkommensmail ging bei mir per BCC über GMX und wurde dann bei meinem Thunderbird mit doppelten anstatt einfach Zeilenumbruch dargestellt. Und da habe ich nachgeschaut und: ISPConfig versendet die Zeilenbrüche der Willkommensmail mit CR als auch LF. Ich habe das herausgefunden, indem ich mir mal mehrere Mails im Hex-Editor angeschaut habe. Outlook zeigt CR/LF-Zeilenumbrüche übrigens als doppelte Zeilenumbrüche an.

    Ich bin es auch gewohnt, lediglich einen LF als Zeilenumbruch in Mails zu verwenden, da dieser garantiert von allen E-Mail-Clients (zumindest allen produktiv nutzbaren) richtig interpretiert wird. @sqrt: Hast Du denn die falsch dargestellte Mail noch da? Falls ja, leite sie doch mal bitte an flipkick@gmx.net weiter, möglichst als Anhang. Eventuell wurden die Zeilen nur im Textarea-Feld des Formulars umgebrochen. Dieses Feld ist allerdings nicht auf wrap=physical gesetzt (obwohl im Formdesigner so hinterlegt?!), so dass sie nur im Formular umgebrochen werden, diese Zeilenumbrüche aber nicht in die Datenbank übernommen werden.

    Zu meinem Problem: Wo kommt nun aber das CR her? Beim Versenden erst einmal aus der Datenbank. Dort hat er unter isp_isp_reseller.client_salutatory_email_message tatsächlich die Willkommensnachricht mit \r\n-Zeilenumbrüchen gespeichert. Also wird es so eingetragen. Und natürlich, Zeilenumbrüche in textarea-Feldern werden als \r\n vom Browser codiert und gesendet. Patch für das Problem wäre:

    Code:
    --- ispconfig_isp_kunde.lib.php.orig    2008-05-06 11:44:07.000000000 +0200
    +++ ispconfig_isp_kunde.lib.php 2008-05-07 01:01:35.000000000 +0200
    @@ -145,6 +145,7 @@
    
                  if($kunde["kunde_email"] != "" && eregi("^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$", $kunde["kunde_email"]) && $absender_email != "" && eregi("^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$", $absender_email) && $absender_name != "" && $subject != "" && $message != ""){
    
    +          $message = str_replace("\r\n", "\n", $message);
               $message = str_replace("%%%USER%%%", $kunde["webadmin_user"], $message);
               $message = str_replace("%%%PASSWORD%%%", $kunde["webadmin_passwort"], $message);
               $message = str_replace("%%%FIRST_NAME%%%", $kunde["kunde_vorname"], $message);
    
    Ich würde das so übernehmen. Till, was meinst Du?

    Grüße,
    flip
     
    Zuletzt bearbeitet: 7. Mai 2008
  7. Till

    Till Administrator

    Ja, können wir von mir aus so machen. Scheibst Du den Patch bitte gleich auch mit ins stable SVN?
     
  8. flipkick

    flipkick New Member

    Ok, ist nun im trunk und 2.2-stable-branch. Zusätzlich wird nun auch das CR bei den anderen automatisch versandten Mails gefiltert.

    Grüße,
    flip
     
  9. Till

    Till Administrator

    Super, Danke!
     

Diese Seite empfehlen