Posts: 97
Threads: 38
Joined: Feb 2012
me again
Hallo,
ich frickel schon ne Std. an einm blöden Problem:
Wenn der Name des Absenders Umlaute enthält,
entsteht nach jedem Umlaut eine neue Absenderadresse:
Sö@dd12300.hoster.com, sö@dd12300.hoster.com, nke <nke@domainname.de>
hier in Sösönke wegen der ö´s.
----
- Plugins > p01-contact Sprache = de (Standardsprache ist de)
- p01-contact-Standardwerte sehen so aus: name!, email!, subject!, message! und label werden in der Seite
auch de-übersetzt.
- in der p01-contact.php > function lang($key) stimmt der $path auf die de.php
- Das Template ist <html lang="de"> eingestellt
im debug-modus sieht der header so aus:
From: Sösönke
Reply-To: Sösönke
Return-Path: Sösönke
MIME-Version: 1.0
Content-type: text/html; charset=UTF-8
X-Mailer: PHP/5.2.12-nmm4
eigentlich ok ... keine Ahnung, wo ich noch schauen soll (
kennt jemand das Probelm? und kann es lösen?
Danke, Gruß, B.
Posts: 97
Threads: 38
Joined: Feb 2012
nachzutragen: natürlich neueste GS- und Plugin-software-versionen und
Themes im Header:
<meta charset="utf-8">
in htaccess
AddDefaultCharset UTF-8
-------------------------------------------
ich habe jetzt ein workaround:
in der p01-contact.php ändern: Code: function send_mail() ...
z700 case 'textarea' :
$content .= '<p style="margin:10px;padding:10px;border:1px solid silver">';
$content .= nl2br($value) . '</p>'.$name; // name hier angefügt
...
z760 $headers = "From: <$email>\r\n"; // entfernt $name hier, da eben zu Umlaut-fehler.
...
Grüße, B.
Posts: 18
Threads: 0
Joined: Feb 2012
Belletage Wrote:im debug-modus sieht der header so aus:
From: Sösönke
Reply-To: Sösönke
Return-Path: Sösönke
MIME-Version: 1.0
Content-type: text/html; charset=UTF-8
X-Mailer: PHP/5.2.12-nmm4
eigentlich ok Nein, das ist nicht okay. In E-Mail-Headern dürfen nur ASCII zeichen verwendet werden (siehe RFC 5322). Soll nun ein Header-Field Umläute (oder andere nicht erlaubte Zeichen) enthalten, so kann es speziell kodiert werden. Dies wird in p01-contact.php in Zeile 723 mit dem Betreff gemacht. Ganz analog sollte dann auch der Absender behandelt werden; in Zeile 724 einfügen:
Code: $name = '=?utf-8?B?' . base64_encode($name) . '?=';
(ich habe das allerdings nicht getestet, da ich das Plugin nicht installiert habe).
Christoph
Posts: 97
Threads: 38
Joined: Feb 2012
Hallo,
Danke, super, es funktioniert - fast. Das Wichtigste: E-Mail wird nicht gesplittet.
(btw.: kennt der p01-contact-Autor das Problem nicht?)
Aber:
Ich bekomme die Mails nicht ansehenlich hin.
Die Frage ist, ob das an den E-Mail-Clienten liegt:
im SeaMonkey-Mailer siehts z.B. unter "Von:" und in den Kopfzeilen so aus:
Sösönke <soenke@domainname.de>
in PopTray (poptray.org) z.B. ganz übel:
=?utf-8?B?UyZvdW1sO3Mmb3VtbD ...
Die meisten Mails, die ich bekomme, kann man in o.g. Mailern lesen / sind richtig kodiert.
Man weiß ja aber nicht, mit welchen Mailern die p01-contact-Nutzer arbeiten.
Fehlt in den p01-contact-headers wohl noch eine Info, anhand der Klienten
die Strings lesbar umkodieren können?
Das ist ja ok/gegeben: $headers .= "Content-type: text/html; charset=UTF-8\r\n";
Gruß B.
Posts: 2,928
Threads: 195
Joined: Feb 2011
Bella,
ich stecke mitten im Auspacken von 45 Buchkartons nach meinem Umzug, und hab deshalb echt wenig Zeit, aber ich muss sagen, ich nutze das Script auch und habe nicht solche Probleme wie du.
welchen Zeichensatz hat denn die SEite, in der das Formular sitzt? Könnte es das sein?
Da Umlaute wenn kodiert mit einem ; enden, und das als Trennzeichen für mehrere Empfänger gedacht ist, ist klar, dass geteilt wird...
schau bitte mal nach dem Zeichensatz deines Templates, ob es UTF-8 ist (wirklich UTF-8, nicht utf-8)
und woher sollen wir wissen, ob der Pluginentwickler das Problem kennt? Da musst du ihn schon selbst fragen oder im Support-Thread des Plugins schauen.. ;=)
lieber Gruss, Connie
Posts: 97
Threads: 38
Joined: Feb 2012
Hallo,
die Site hat:
<meta charset="utf-8" />
und ist das leicht veränderte Template "AcidMind".
eine Änderung auf
<meta charset="UTF-8" />
hat leider nichts verbessert: Betreff und Von:
sind immer noch nicht vorzeigbar/lesbar.
Grüße und schönes Auspacken!
Posts: 18
Threads: 0
Joined: Feb 2012
Hallo Belletage, hallo Connie,
ich bin zeitlich gerade sehr knapp, daher die späte Antwort, und leider Spekulation statt Fakten (sprich: ungetestet).
Connie Wrote:Da Umlaute wenn kodiert mit einem ; enden, und das als Trennzeichen für mehrere Empfänger gedacht ist, ist klar, dass geteilt wird... Ja, natürlich!
Das eigentliche Problem sind wohl zunächst mal nicht die Umlaute, sondern die Tatsache, dass das diese als HTML-Entities kodiert werden. Aus "ö" wird also "ouml;" etc. Das später dann base64 zu kodieren, hilft nicht. Nun konnte ich im Plugin (also in p01-contact.php) kein htmlentities() finden -- macht das evtl. Get-Simple???
Aber wie auch immer: im Zweifel sollte das für die E-Mail-Header rückgängig gemacht werden (und "sicherheitshalber" das UTF-8 auch in Großbuchstaben -- vermutlich egal, aber ich bin nicht sicher). Also p01-contact.php Zeile 724:
$name = '=?UTF-8?B?' . base64_encode(html_entity_decode($name)) . '?=';
(so wird zunächst "ouml;" wieder zu "ö", das dann anschließend "E-Mail-Header gerecht" kodiert wird)
Zum "charset": was im HTML-Quelltext steht, ist im Zweifelsfall nicht maßgeblich. Ausschlaggebender ist, was der Server als "Content-Type" sendet. Das kann man z.B. im Firefox sehen, wenn man "Extras->Live HTTP Headers" aktiviert. Was der Browser dann als "charset" annimmt, sieht man im Firefox unter "Ansicht->Zeichenkodierung" (ich glaube aber nicht, dass es daran liegt).
Belletage Wrote:(btw.: kennt der p01-contact-Autor das Problem nicht?) Keine Ahnung. Der Autor ist Nicolas Liautaud <contact@nliautaud.fr>. Aber wo nun der Support-Thread des Plugins zu finden ist? -- ich kenn' mich leider hier auch noch nicht so gut aus.
Christoph
Posts: 2,928
Threads: 195
Joined: Feb 2011
Christoph,
der Support-Thread eines Plugins ist immer auf der Plugin-Seite notiert, in diesem Falle:
http://get-simple.info/forum/topic/1108/...your-pages
danke für deine Informationen!
Posts: 97
Threads: 38
Joined: Feb 2012
hi Christoph, hi connie,
UTF-8 in Groß oder Klein ist egal ...
das "zusätzliche" html_entity_decode() bringt im SM-Mail-Klienten ein schwarzes Karo mit Fragezeichen - zumindest Mal was Anderes ...
Danke für den Support-Thread-Link
viele Grüße, Bell.
Posts: 18
Threads: 0
Joined: Feb 2012
Hallo Connie, hallo Bell,
Connie Wrote:der Support-Thread eines Plugins ist immer auf der Plugin-Seite notiert Danke für den Hinweis. :-) Der Link ist ja eigentlich nicht zu übersehen.
Belletage Wrote:das "zusätzliche" html_entity_decode() bringt im SM-Mail-Klienten ein schwarzes Karo mit Fragezeichen - zumindest Mal was Anderes ... Und auch der Hinweis auf einen Bug in meiner Änderung. Ein solches Zeichen wird nämlich immer dann dargestellt, wenn eine Bytefolge, die kein gültiges UTF-8 ist, als UTF-8 dargestellt werden muss. html_entity_decode() wandelt aber per Voreinstellung nach ISO-8859-1 (bei PHP < 5.4), und dann wird aus dem "ö" ein "\xF6". Für UTF-8 müsste es aber "\xC3\xB6" sein. Also müsste die Zeile lauten:
Code: $name = '=?UTF-8?B?' . base64_encode(html_entity_decode($name), ENT_QUOTES, 'UTF-8') . '?=';
Ich hoffe, dass es so funktioniert. Ein (theoretisches?) Problem bliebe aber auch dann noch: solcherart kodierte Header dürfen nur eine bestimmte Länge haben (ich glaube 75 Zeichen). Das gäbe dann Probleme mit langen Namen. Wie das dann zu behandeln wäre, weiß ich aber nicht.
Christoph
Posts: 8
Threads: 2
Joined: Feb 2015
Habe Zeile 271
$tmp = htmlentities($tmp, ENT_QUOTES, 'UTF-8');
und 723
$subject = '=?utf-8?B?' . base64_encode($subject) . '?=';
einfach mal gelöscht, funzt perfekt, hoffe das hat sonst keine Auswirkungen, wer will kanns ja mal probieren.
|