Mein Workaround für Umlaute in Subjects

Mein Workaround für Umlaute in Subjects

Postby Kruge » 1:36pm, Tue 30 Aug, 2011

Haihai!

Ich habe bei der Suche nach Lösungen gesehen, daß ich nicht der Einzige bin, der in phplist mit Umlauten im Betreff zu kämpfen hat.

Die immer wieder auftauchenden Lösungsansätze greifen alle an der SQL-Datenbank an, da das grundlegende Problem auch da liegt - Codierung der dortigen Felder in Zusammenarbeit mit der Konfiguration von PHPlist, es muß da wohl einfach alles stimmen.

Mein Problem damit: Ich habe weder die nötigen Zugriffsrechte und erst recht nicht die SQL-Kenntnisse, um mich da ranzuwagen, aber ich bin - über eine Idee von einem Dänischen User - auf einen für mich akzeptablen Workaround gekommen - vielleicht hilft der ja auch jemand anders weiter, oder es hat jemand noch einen Verbesserungsvorschlag:

Da meine Datenbank anscheinend keine Umlaute mag, erscheint, nachdem ich ein Mail-Subject wie z.B. "Übersetzung" für eine Nachricht eingebe je nach phplist-Konfiguration wahlweise Kauderwelsch oder garnix stattdessen nach einem Refresh oder in einer Testmail.

Um das zu umgehen, schreibe ich die Subjects in phplist einfach Datenbank-Kompatibel, z.B.: "Übersetzung", das ist Teil eins der Lösung.

Teil zwei greift dann in sendemaillib.php (im admin-Folder)

Dort steht in Zeile 759:
Code: Select all
  if (!TEST) {
    if ($hash != 'forwarded' || !sizeof($forwardedby)) {
      $fromname = $cached[$messageid]["fromname"];
      $fromemail = $cached[$messageid]["fromemail"];
      $subject = $cached[$messageid]["subject"];


Direkt dahinter habe ich nun Folgendes eingefügt:

Code: Select all
     $subject = str_replace("ä", "ä", $subject);   // Micha - Deals with Umlaute in the Headers - workaround - req. "ü"-Notation in phplist header
     $subject = str_replace("ö", "ö", $subject);
     $subject = str_replace("ü", "ü", $subject);
     $subject = str_replace("Ä", "Ä", $subject);
     $subject = str_replace("Ö", "Ö", $subject);
     $subject = str_replace("Ü", "Ü", $subject);
     $subject = str_replace("ß", "ß", $subject);
     $subject = preg_replace('~([\xA0-\xFF])~e', '"=" . strtoupper(dechex(ord("$1")))', $subject);
     $subject = '=?ISO-8859-1?Q?' . $subject . '?=';;


Die ersten Zeilen wandeln die Datenbank-Kompatible Codierung wieder in die Umlaute um und die letzten beiden Zeilen (von hier: http://forum.de.selfhtml.org/archiv/2005/3/t104147/) wandeln *diese* dann in Subject-Line-Konformen Code um.

Was meint ihr?
Kruge
PL Nut
 
Posts: 22
Joined: 2:15pm, Wed 01 Jun, 2011

Re: Mein Workaround für Umlaute in Subjects

Postby Kruge » 2:01pm, Tue 30 Aug, 2011

Erste Verbesserung gleich hinterher:

Anstelle der langen Liste Ü -> "Ü" etc. tut's natürlich auch einfach:

Code: Select all
     $subject = html_entity_decode($subject);


Und wenn ich jetzt noch die Stelle finde, an der man das Subject eingibt, dann werde ich da auch einfach "$subject = htmlentities($subject);" einbauen und hab' mir das von Hand codieren erspart...
Kruge
PL Nut
 
Posts: 22
Joined: 2:15pm, Wed 01 Jun, 2011


Return to German forum

Who is online

Users browsing this forum: No registered users and 3 guests

cron