ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
Verbesserung: Korrekte Codierung (iso-8859-1) der Mails

 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Modul Formular (Conpresso 4)
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 994
Wohnort: Wuppertal

BeitragVerfasst am: 31.05.2011 21:40    Titel: Verbesserung: Korrekte Codierung (iso-8859-1) der Mails Antworten mit Zitat

Um zu erreichen, dass Umlaute im Mail-Body und in der Betreffzeile korrekt codiert werden, sind ein paar wenige Änderungen an der Datei ../mod_form/includes/actions.inc.php nötig.

Man suche in der genannten Datei bei Zeile 239 den Abschnitt

Code:
         // Mail an Admin?
         if ($activeModules[$directory]['mail']=="yes")
         {
            $empfaenger = $activeModules[$directory]['recipient'];
            $betreff = $activeModules[$directory]['mail_prefix'].sprintf($activeModules[$directory]['subject'],$data['titel']);
            $header = 'From: '. $data['email'] . $newline .
               'Reply-To: '.$data['email'] . $newline .
               'X-Mailer: mod_form by conpresso4.de via PHP/' . phpversion();

            mail($empfaenger, $betreff, $nachricht, $header);
         }

und ersetze diesen durch:
Code:
         // Mail an Admin?
         if ($activeModules[$directory]['mail']=="yes")
         {
            $empfaenger = $activeModules[$directory]['recipient'];
            $betreff = $activeModules[$directory]['mail_prefix'].sprintf($activeModules[$directory]['subject'],$data['titel']);
            $betreff = preg_replace('~([\xA0-\xFF])~e', '"=" . strtoupper(dechex(ord("$1")))', $betreff);
            $betreff = '=?ISO-8859-1?Q?' . $betreff . '?=';            
            $header = 'From: '. $data['email'] . $newline .
               'Reply-To: '.$data['email'] . $newline .
               'Content-Type: text/plain; charset=iso-8859-1' . $newline .
               'X-Mailer: mod_form by conpresso4.de via PHP/' . phpversion();

            mail($empfaenger, $betreff, $nachricht, $header);
         }

Nur wenige Zeilen darunter ist der Abschnitt
Code:
               // Bestätigungs-Mail
               $empfaenger = $data['email'];
               $betreff = sprintf($activeModules[$directory]['subject'],$data['titel']);
               $header = 'From: '. $data['email'] . $newline .
                  'Reply-To: '.$data['email'] . $newline .
                  'X-Mailer: mod_form by conpresso4.de via PHP/' . phpversion();

zu ersetzen mit:
Code:
               // Bestätigungs-Mail
               $empfaenger = $data['email'];
               $betreff = sprintf($activeModules[$directory]['subject'],$data['titel']);
               $betreff = preg_replace('~([\xA0-\xFF])~e', '"=" . strtoupper(dechex(ord("$1")))', $betreff);
               $betreff = '=?ISO-8859-1?Q?' . $betreff . '?=';            
               $header = 'From: '. $data['email'] . $newline .
                  'Reply-To: '.$data['email'] . $newline .
                  'Content-Type: text/plain; charset=iso-8859-1' . $newline .
                  'X-Mailer: mod_form by conpresso4.de via PHP/' . phpversion();

Das war's schon.

Das Gesagte gilt für die Version 4.1b von mod_form. Ältere bzw. künftige Versionen können analog geändert werden.

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6988

BeitragVerfasst am: 02.06.2011 07:08    Titel: Antworten mit Zitat

Daß dies bei möglicher falscher Darstellung von Umlauten erforderlich ist, leutet mir ein.
Aber ist es denn so?
Ich habe sehr viele Formulare im Einsatz und noch nie wurde dort ein Umlaut falsch kodiert.
Vielleicht suchen wir mal die Ursache statt die Symptome zu bekämpfen.
Welche Codierung verwendet der Webauftritt?
Und welche der Server?

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 994
Wohnort: Wuppertal

BeitragVerfasst am: 02.06.2011 13:06    Titel: Antworten mit Zitat

Zitat:
Daß dies bei möglicher falscher Darstellung von Umlauten erforderlich ist, leutet mir ein.
Aber ist es denn so?

Mir ist es im Thunderbird aufgefallen, siehe angehängten Screenshot, bei dem die Nachricht nur aus deutschen Umlauten besteht.
Du kannst natürlich argumentieren, dass der Mailer auf die falschen Standard-Codierungen eingestellt (UTF-8) ist, aber dies kann ja auch bei anderen der Fall sein.
Der versendende Server ist www.efco.de. Welche weiteren Infos brauchst du konkret noch?





screenshot.jpg
Klicken für Originalbild! screenshot.jpg (27.5KB) - 351 mal angeklickt



_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6988

BeitragVerfasst am: 02.06.2011 13:25    Titel: Antworten mit Zitat

Habe extra Firebird installiert und kann vergleichbares nicht beobachten Confused

Bei Dir fällt mir allerdings auf, daß, obwohl Du 4.1b verwendest, im Formular-Tag
Code:
enctype="multipart/form-data"

fehlt.

Das ist da extra mit drin, weil die Codierung von Sonderzeichen sonst oft Probleme bereitet...

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 994
Wohnort: Wuppertal

BeitragVerfasst am: 02.06.2011 14:44    Titel: Antworten mit Zitat

Der Server benutzt noch die beta3-Version von mod_form. Wg. der darin noch fehlenden Captchas wird dies in allernächster Zeit upgedatet.

Die enctype-Angabe befindet sich ja in der form.inc.php der Version 4.1b. Deshalb fehlt sie in den Formularen, die du siehst. Die Mail, deren Screenshot ich oben gepostet habe, wurde aber mit einer Testinstallation der Version 4.1b erzeugt, sodass das Formular die genannte enctype-Angabe enthält (habe ich überprüft). Dennoch kommt es zu der mangelhaften Codierungserkennung in Thunderbird, da der Mailquelltext ohne meine Änderungen an actions.inc.php keinerlei Kodierungsangaben enthält (s. Anhang).





Mailquelltext.txt - 1.96 KB
406 mal


_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6988

BeitragVerfasst am: 02.06.2011 18:33    Titel: Antworten mit Zitat

Der angehängte Quelltext enthält gar keine Umlaute (ich sehe nur Fragezeichen), also werden sie wohl schon vom Server unterschlagen.
Werden die Formulardaten auch als Artikel gespeichert? Sind dort die Umlaute vorhanden?

Ich will ja gar nichts gegen Deine Modifikation sagen, nur scheint sie normalerweise entbehrlich zu sein.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 994
Wohnort: Wuppertal

BeitragVerfasst am: 02.06.2011 18:52    Titel: Antworten mit Zitat

Wie schon erwähnt, ist mein Thunderbird auf Unicode (UTF-8) eingestellt und behandelt Mails, die keine Angaben zu ihrer Kodierung enthalten, als wären sie in UTF-8 kodiert.
Die Fragezeichen in obigem Quelltext sind nur die textlichen Entsprechungen für die graphischen Fragezeichen in der Quelltextansicht von TB. - siehe Anhang

Ich kann mir vorstellen, dass nicht nur mein Mailprogramm Schwierigkeiten hat, die Kodierung selbstständig zu erkennen. Deshalb halte ich es für sinnvoll mod_form entprechend zu modifizieren - just in case.





screenshot.jpg
Klicken für Originalbild! screenshot.jpg (62.9KB) - 350 mal angeklickt



_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1745

BeitragVerfasst am: 05.06.2011 19:42    Titel: Antworten mit Zitat

Hi,

ich glaube, dass laut RFC 2822 (nagelt mich nicht fest) ein Content-Type Charset im Mailheader empfohlen wird:

Content-­Type: text/plain; charset="iso­-8859-­1"

Ansonsten hängt es davon ab mit welchen Charset das Formular ausgefüllt wurde. Bei Tests hat man meistens einen identischen Charset, aber manche User benutzen halt andere.

Ich denke, es kann nicht schaden, etwas in der Art mitzuschicken.

Balu

_________________
Bartels.Schöne
ConPresso Support & Development
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6988

BeitragVerfasst am: 05.06.2011 20:59    Titel: Antworten mit Zitat

Ich stelle mir vor eine Wahlmöglichkeit einzubauen.

Also UTF8, ISO oder eben gar keine.
Denn dann sollte natürlich auch der Inhalt passend codiert sein.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Modul Formular (Conpresso 4) Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen