ConPresso Community

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

 
Mailcodierung bei mod_form 4.1d
Gehe zu Seite 1, 2  Weiter
 
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: 996
Wohnort: Wuppertal

BeitragVerfasst am: 06.11.2013 21:26    Titel: Mailcodierung bei mod_form 4.1d Antworten mit Zitat

Ich habe heute erstmals die Version 4.1d von mod_form eingesetzt. In dieser kann man ja die Codierung der verschickten E-Mails wählen.

Mir fiel auf, dass die Subject-Zeile nicht korrekt codiert wird, bspw. kommt Folgendes im Mail-Quelltext (auszugsweise) heraus, wenn ich iso-8859-1 als Codierung einsetze und die Betreffzeile
Code:
Testsubject mit Umlauten und Sonderzeichen: äÄöÖüÜß?
lautet:
Code:
Subject: =?ISO-8859-1?Q?Testsubject mit Umlauten und Sonderzeichen: äÄöÖüÜß??=

Es findet demnach gar keine Codierung der Umlaute und Sonderzeichn statt!
Korrekt wäre in etwa dies (Mail mit dem selbem Subject, mit Thunderbird an mich selbst gesandt):
Code:
Subject: =?ISO-8859-1?Q?Testsubject_mit_Umlauten_und_Sonderzeiche?=
 =?ISO-8859-1?Q?n=3A_=E4=C4=F6=D6=FC=DC=DF=3F?=
oder auch folgender Code:
Code:
Subject: Testsubject mit Umlauten =?ISO-8859-1?Q?=E4=FC=F6=20und=20Sonderzeichen?= =?ISO-8859-1?Q?=3A=20=E4=C4=F6=D6=FC=DC=DF=3F?=

In http://community.conpresso.de/viewtopic.php?p=26703#26703 hatte ich deshalb noch die Code-Zeile
Code:
$betreff = preg_replace('~([\xA0-\xFF])~e', '"=" . strtoupper(dechex(ord("$1")))', $betreff);
in meinem Anpassungsvorschlag drin. Aber auch diese ist noch suboptimal.

Ich schlage für mod_form 4.1d vor, in includes/actions.inc.php in den Zeilen 258 und 280 jeweils
Code:
$betreff = '=?'.$encoding.'?Q?' . iconv ( iconv_get_encoding('internal_encoding') , $encoding , $betreff ) . '?=';
gegen
Code:
$betreff = mb_encode_mimeheader($betreff, $encoding, "Q");
auszutauschen.

Ich hab's bei mir unter CPO 4.0.12, PHP 5.2.17 und PHP 5.4.21 getestet.

_________________
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: 7010

BeitragVerfasst am: 07.11.2013 12:02    Titel: Antworten mit Zitat

Ich bin mir nicht wirklich sicher, ob das so richtig ist.

Die Codierungseinstellung in den Formulareinstellungen gibt ja an, mit welcher Codierung das Mail gesendet werden soll und nicht in welcher der Server normalerweise arbeitet.

Laut PHP-Handbuch steht der zweite Parameter für
"specifies the name of the character set in which str is represented in"

Tatsächlich scheint das aber zu funktionieren...

_________________
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: 996
Wohnort: Wuppertal

BeitragVerfasst am: 07.11.2013 12:33    Titel: Antworten mit Zitat

Deine Lösung funktioniert für den Mail-Inhalt schon, aber nicht für die Betreff-Zeile. Mir wäre es ja sonst nicht aufgefallen, ne?
_________________
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: 7010

BeitragVerfasst am: 07.11.2013 13:20    Titel: Antworten mit Zitat

Da es bei manchen Mails bzw. Clients unschöne Umbrüche in Links gibt, habe ich noch den Nachrichtentext quoted-printable gemacht und versucht alle HTML-Sonderzeichen wieder in plain text zurückzuverwandeln.

Falls Du diese hier mal ausprobieren möchtest...

edit: 14:06 Uhr gerade nochmal eine neue Version hochgeladen, damit auch PHP<5.3 funktioniert...

_________________
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: 996
Wohnort: Wuppertal

BeitragVerfasst am: 07.11.2013 14:15    Titel: Antworten mit Zitat

Funktioniert einwandfrei. Getestet mit UTF-8- und ISO-8859-1-"Zwangscodierung"
_________________
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: 7010

BeitragVerfasst am: 07.11.2013 14:21    Titel: Antworten mit Zitat

Aber leideer funzt die Version für PHP<5.3 noch nicht richtig...
_________________
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: 996
Wohnort: Wuppertal

BeitragVerfasst am: 07.11.2013 14:24    Titel: Antworten mit Zitat

Bei mit funzt es unter PHP 5.2.17.

Was heißt denn, dein "es funzt nicht richtig"? Was geht nicht und wie äußert sich das?

EDIT: Das Einzige, was mir jetzt noch auffiel ist, dass unter PHP 5.2 mehr Zeilenumbrüche als nötig erzeugt 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: 7010

BeitragVerfasst am: 07.11.2013 14:31    Titel: Antworten mit Zitat

Die benutzte Funktion quoted_printable_encode gibt es eben erst seit PHP5.3 und die verwendete Ersatzfunktion erzeugt zu viele Zeilenschaltungen (\r\n statt nur \n)
_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: Mr. Magpie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 996
Wohnort: Wuppertal

BeitragVerfasst am: 07.11.2013 14:33    Titel: Antworten mit Zitat

Also das, was ich in meinem EDIT beschrieb...
_________________
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: 7010

BeitragVerfasst am: 07.11.2013 17:43    Titel: Antworten mit Zitat

Das mit den Zeilenumbrüchen hatte ich dann schnell im Griff, aber...

Quoted printable scheint bei Plain-Text Links in Outlook zu Problemen zu führen. Ist wohl eher für HTML-Mails sinnvoll.

Daher habe ich es wieder entsorgt und stattdessen format=flowed ergänzt. Jetzt sind auch in Outlook lange umgebrochene Links trotzdem als ein Link funktionsfähig.
Ohne format=flowed wurden sie beim Umbrechen in einen Link und eine Textzeile zerlegt.

_________________
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: 996
Wohnort: Wuppertal

BeitragVerfasst am: 07.11.2013 23:14    Titel: Antworten mit Zitat

Soeben erst getestet - funzt.

Aber für die Bestätigungs-Mail sollte auch noch format=flowed eingestellt und das quoted-printable entsorgt werden.

Die Zeilen 244/245
Code:
         $nachricht = $template_datei;
            $contentType = 'Content-Type: text/plain;' . $newline . 'Content-Transfer-Encoding: quoted-printable' . $newline;
erscheinen mir überflüssig, oder täusche ich mich?

p.s.: In der X-Mailer-Zeile eliminiere ich noch das phpversion() - man muss es den Angreifern ja nicht noch einfacher machen, die verwendete PHP-Version heraus zu finden Smile

_________________
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: 7010

BeitragVerfasst am: 07.11.2013 23:28    Titel: Antworten mit Zitat

Ja, richtig. Habe ich jetzt ergänzt.

Und nein, die Zeilen sind nicht überflüssig. Sie sind der Default-Wert und werden nur bei der Wahl einer Codierung überschrieben, ansonsten geht das Mail wie in den früheren Versionen ohne spezielle Codierung raus.





actions.inc.zip - 4.1 KB
277 mal


_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: Mr. Magpie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 529

BeitragVerfasst am: 24.03.2015 17:47    Titel: Antworten mit Zitat

Hallo,

das Thema ist zwar schon etwas alt, aber ich habe gerade auch das Problem, dass in den verschickten Bestätigungsmails zu viele Leerzeilen sind.

Es hatte sich für mich so angehört, als hättet ihr das behoben, oder habe ich da was falsch verstanden? Rolling Eyes

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 24.03.2015 22:15    Titel: Antworten mit Zitat

Was bedeutet denn "zu viele Leerzeilen"?

Meinst Du damit dass nach jeder Zeile erst mal eine Leerzeile kommt?
Oder häufen die sich an irgendeiner Stelle?

Manche Mailprogramme sehen ein \r\n als eine neue Zeile, andere gleich als zwei.
Daher muss man mal prüfen, mit welchem Quelltext Dein Browser das Template abspeichert.
Das Modul selbst schreibt seine Zeilen standardmäßig nur mit einem \n, das kann man aber gleich am Anfang von actions.inc.php ändern. Allerdings hast Du ja nicht zuwenige sondern eben zuviel. Vermutlich. Je nachdem wo Du jetzt wieviele zuviel hast...

Die Mailcodierung betrifft die Umlaute. Hast du Probleme mit Umlauten?
Wenn nein, dann braucht Du auch die Codierung nicht.

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


Anmeldungsdatum: 04.07.2007
Beiträge: 529

BeitragVerfasst am: 25.03.2015 09:43    Titel: Antworten mit Zitat

Hallo Markus,

ich habe in der Tat nach jeder Zeile eine Leerzeile drin, allerdings nur im Inhalt der textarea. Die anderen Formularfeldinhalte, die ich in der E-Mail verschicken lasse (alles input-Felder), werden, so wie im template angelegt, normal in der Mail gezeigt. Nur die Zeilenumbrüche der textarea sind eben doppelt drin.


Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Modul Formular (Conpresso 4) Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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