Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.8 veröffentlicht (17.10.16)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
[G] Zeichensatz in E-Mails
#1
Heute habe ich von mybboard.de eine Mail mit folgendem Betreff erhalten:

Neue Antwort zu Mitglieder nach einer Zeit l��schen lassen

Das ö aus löschen ist kaputt.

Im RAW des Mailheaders sieht es so aus:

Code:
Subject: =?utf-8?B?TmV1ZSBBbnR3b3J0IHp1IE1pdGdsaWVkZXIgbmFjaCBlaW5lciBaZWl0IGzD?= =?utf-8?B?tnNjaGVuIGxhc3Nlbg==?=

Im Mailbody selbst sind die Umlaute korrekt dargestellt, nur das Subject stimmt nicht.

Sind hier irgendwelche Zeichensatzprobleme bekannt?
#2
Bekannt ist nur, dass die Mailprogramme von Microsoft manchmal Probleme damit haben. Welchen Mail-Client verwendest du?

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#3
Ich hole mir die Mails mit fetchmail vom Server, dann werden sie mit procmail durch SpamAssassin gejagt, und in eine maildir-Struktur einsortiert. Die Mails werden also - mal von den zusätzlichen SpamAssassin-X-Headern abgesehen - unmodifiziert so gespeichert wie sie der Mailserver bekommen hat. Gelesen wird das dann mit dem Mailprogramm mutt. Mailprogramme von Microsoft habe ich noch nie verwendet. Ich wüßte da vermutlich auch nicht wie ich an die eigentliche Maildatei herankommen sollte, bei der das Subject und sonstige MIME noch nicht dekodiert ist.

Natürlich kann ich einen Fehler auf meiner Seite trotzdem nicht ausschliessen. Wenn du das Thema "Mitglieder nach einer Zeit löschen lassen" hier abonnierst und dir eine Mail zuschicken läßt, wird es richtig angezeigt für dich? Bei mir war bei jeder dieser Mails das ö auf gleiche Weise kaputt. Ich bin leider noch nicht dazu gekommen, das Problem in meinem eigenen Forum zu reproduzieren.

Ich habe normalerweise keine Probleme mit Zeichensätzen in Mails. Da ich auch Fremdsprachen lerne bekomme ich auch öfters Mails mit noch exotischeren Zeichensätzen als UTF-8 ab (z.B. shift-jis für Japanisch). Auch russische / chinesische / etc. Mails werden (soweit ich das beurteilen kann) bei mir korrekt dargestellt (sowas bekomme ich allerdings nur unfreiwillig als Spam über meine Catchall-Adressen).
#4
Kannst du bitte mal auf das betroffene Thema antworten?

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#5
Done (und gleich wieder gelöscht unter der Annahme daß die Mail sofort rausgeht).
#6
Danke, die Mail ist angekommen und der Betreff wurde korrekt dargestellt (Getestet unter RoundCube Webmail, Mozilla Thunderbird und Outlook 2007). Der Fehler ist für mich also nicht reproduzierbar.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#7
Hmkay, dann muss ich mir das nochmal näher anschauen. Hast du zufällig in einem dieser Programme die Möglichkeit, die Mail im RAW Format darstellen zu lassen (also so wie du es vom Server bekommen hast)? Mich würde interessieren ob für dich das Subject genauso codiert ist wie bei mir oben, also das MIME =?utf-8?B?TmV1ZSBBbnR3b3J usw. Teil.

Bei mir besteht diese Codierung warum auch immer aus zwei Teilen und die Trennung passiert mitten im zweibyte UTF-8 Zeichen weshalb die Darstellung bei mir fehlerhaft wird.
#8
Hier der Auszug aus dem Head der Mail:
Code:
Subject: =?utf-8?B?TmV1ZSBBbnR3b3J0IHp1IE1pdGdsaWVkZXIgbmFjaCBlaW5lciBaZWl0IGzD?= =?utf-8?B?tnNjaGVuIGxhc3Nlbg==?=

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#9
Ok, bei dir also genauso wie bei mir. Dann weiss ich wenigstens schon einmal, daß mein Mailfilter da nicht irgendwas dazwischengepfuscht hat.

Ich habe ein wenig in den Mail / MIME RFC gelesen. Das Subject muss so komisch encodiert werden da der Mail Standard vorschreibt, daß im Mailheader nur ASCII-Zeichen vorkommen dürfen. Bei Headereinträgen bei denen das nicht der Fall ist, also z.B. Subject mit Umlauten darin, muss das Subject mit sogenannten Encoded Words umschrieben werden. Zudem dürfen Headereinträge nicht länger sein als 76 Zeichen. Daher werden mehrere Encoded Words aneinandergekettet.

In dem Beispiel hier haben wir also zwei Encoded Words:
=?utf-8?B?TmV1ZSBBbnR3b3J0IHp1IE1pdGdsaWVkZXIgbmFjaCBlaW5lciBaZWl0IGzD?=
=?utf-8?B?tnNjaGVuIGxhc3Nlbg==?=

Ein Encoded Word beginnt mit der Definition des Zeichensatzes (=?utf-8) gefolgt von der Definition des Encodings (?B für Base64, alternative wäre ?Q für quoted-printable. Normalerweise wird ?Q eingesetzt da das im Gegensatz zu ?B leserlich ist wenn das Subject zum Teil aus ASCII besteht). Darauf hin folgt dann der eigentliche encodete String gefolgt von dem Schlussmarker ==?=.

Das Problem hier ist nun, daß streng genommen, diese Encoded Words in sich abgeschlossene Einheiten sein sollen. Ein Encoded Word mit =?utf-8 behauptet von sich, einen UTF-8 String encodiert zu haben. Das ist in dem von MyBB produzierten Encoded Wort jedoch nicht der Fall, da der Buchstabe ö, der in UTF-8 aus zwei Bytes besteht, auseinandergerissen wurde. Daher endet das erste UTF-8 Encoded Word mit einem Zeichen das nicht UTF-8 ist, und das zweite UTF-8 Encoded Word beginnt dementsprechend mit einem Zeichen das nicht UTF-8 ist.

Ob das nun in Mailprogrammen korrekt dargestellt wird, hängt davon ab, wie diese Programme arbeiten... entweder sie dekodieren einfach nur den encodierten String als Bytefolge, und setzen das dann später ohne nähere Prüfung wieder zusammen... dann ist die Darstellung korrekt weil das auseinandergerissene ö wieder zusammengesetzt wurde

...oder das Mailprogramm versucht jedes Encoded Word einzeln als UTF-8 String zu verstehen und als UTF-8 Zeichen darzustellen, das scheitert dann an den beiden unvollständigen Zeichen, die nicht in den angegebenen Zeichensatz hineinpassen und daher dann als ?? auftauchen.

Streng genommen ist es ein Bug in MyBB, die Angabe dass es sich bei dem Encoded Word um UTF-8 handelt stimmt einfach nicht, wenn darin UTF-8 Zeichen zerstückelt werden. Es wird halt netterweise trotzdem in vielen Mailprogrammen deswegen keine Darstellungsschwierigkeiten geben.

Ich markiere das hier einfach mal als erledigt da Problem nun bekannt, ich kann bei mir bei Gelegenheit die Funktion utf8_encode in der class_mailhandler.php durch etwas anderes ersetzen.

(Wobei ich mich bei der Gelegenheit frage, wieso man sowas in PHP eigentlich überhaupt selber machen muss. Mail ist so ein stinkaltes Protokoll da hätte ich eine Standardkonforme Implementierung in der Sprache selbst erwartet).
Auch nicht Standardkonform ist, daß MyBB das Subject dann in einer Zeile beläßt statt jedem Wort seine eigene Zeile zu geben. Das könnte auch mit einem Bug zusammenhängen http://bugs.php.net/bug.php?id=45955 der jedoch nie bestätigt bzw. dementiert wurde.

Wenn ich selbst so ein Subject anlege sieht es in der RAW Mail so aus:
Code:
Subject: =?utf-8?B?44Gy44KJ44GM44Gq44Kr44K/44Kr44OK?=
    =?utf-8?B?5ryi5a2XIERhcyBpc3QgamEgc293YXMgdm9uIGxhbmd3ZWlsaWcsIMOkw6Q=?=
    =?utf-8?B?w6RoIGphIHNvIHdlcmRlbiB3aXIgbmllIHBhbGF2w6Rybi4gw4TDlsOcw6Q=?=
    =?utf-8?B?w7bDvMOfLg==?=

Also schön auf mehrere Zeilen verteilt.

Ich werde mir mal anschauen wie andere CMS das Mailproblem in PHP angehen, eventuell kann man sich da bei einem anderen GPL Projekt eine passende Funktion organisieren gehen Wink
#10
Ich hab den Bug nun im mybboard.net Bugs Forum gemeldet http://community.mybboard.net/thread-43237.html