E-Mail: Umlaute werden im Betreff nicht richtig dargestellt
Mike©
- php
Moin @ All,
wenn eine Mail über eines meiner Formulare versandt wird, dann kommen die Umlaute (ü/ä/ö/ß) im Betreff nicht richtig an.
Ein Ü wird zu X
Allerdings nur im Betreff. Im E-Mail selbst stellen sie kein Problem dar. Woran hängt's?
Ich nutze diesen Header:
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$header .= "Organization: ".$org_var."\r\n";
$header .= "Content-Transfer-encoding: 8bit\r\n";
$header .= "To: ".$ToReceiver."\r\n";
$header .= "From: ".$org_var." <".$FromSender.">\r\n";
$header .= "Reply-To: ".$org_var." <".$FromSender.">\r\n";
$header .= "Message-ID: <".md5(uniqid(time()))."@{$_SERVER['SERVER_NAME']}>\r\n";
$header .= "Return-Path: ".$domain_user."\r\n";
$header .= "X-Priority: 3\r\n";
$header .= "X-MSmail-Priority: Normal\r\n";
$header .= "X-Mailer: Microsoft Office Outlook, Build 11.0.5510\r\n";
$header .= "X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441\r\n";
$header .= "X-Sender: ".$FromSender."\r\n";
$header .= "X-AntiAbuse: This is a solicited email for - ".$org_var." mailing list.\r\n";
$header .= "X-AntiAbuse: Servername - {$_SERVER['SERVER_NAME']}\r\n";
$header .= "X-AntiAbuse: User - ".$FromSender."\r\n";
Aber auch ein etwas nicht so aufwändiger Header liefert das gleiche Ergebnis:
$header = "From: ".$sender_name." <".$sender_email.">\n";
$header .= "Reply-To: ".$sender_name." <".$sender_email.">\n";
$header .= "X-Mailer: PHP/" . phpversion(). "\n";
$header .= "X-Sender-IP: $ip\n";
$header .= "Content-Type: text/plain";
Danke & regds
Mike©
hi Mike,
hau mal rein in den header:
Content-type: text/plain; charset="ISO-8859-1"
Content-transfer-encoding: quoted-printable
und lass mal hören ob das klappt.
--roro
Moin Rolf
Content-type: text/plain; charset="ISO-8859-1"
Content-transfer-encoding: quoted-printable
und lass mal hören ob das klappt.
Leider negativ :-(
Trotzdem Danke.
regds
Mike©
Hello Mike,
wenn eine Mail über eines meiner Formulare versandt wird, dann kommen die Umlaute (ü/ä/ö/ß) im Betreff nicht richtig an.
Ein Ü wird zu X
Stell mal bitte die ganze Übertragungskette dar.
Welchen Doctype hat Dein Formulardokument und welcher Browser wird benutzt?
Was sind die Voreinstellungen des HTTP-Servers für abgesandte Dokumente?
Mit welchem eMail-Programm wird gesendet (SMTP, POP3 oder IMAP?, ...)
Mit welchem Client wird abgeholt und angezeigt?
Was steht im empfangenen eMail im Byte-Code drin?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Moin Tom,
Welchen Doctype hat Dein Formulardokument und welcher Browser wird benutzt?
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Browser? Na den, welcher der Surfer benutzt.
Was sind die Voreinstellungen des HTTP-Servers für abgesandte Dokumente?
Kein Ahnnung :-(
Mit welchem eMail-Programm wird gesendet (SMTP, POP3 oder IMAP?, ...)
SMTP - mit mail();
Mit welchem Client wird abgeholt und angezeigt?
Mit dem, welchen der User installiert hat.
Was steht im empfangenen eMail im Byte-Code drin?
OK, da hab ich was gefunden, aber wie kann ich das ändern?
X-Amavis-Alert: BAD HEADER Non-encoded 8-bit data (char DC hex): Subject:
Werkstatt Hompage-\334FormKontaktformular\n
( Zu Testzwecken stand da "ÜFormKontak..." )
regds
Mike©
Hallo Mike,
ich hab's mir doch schon gedacht - ein Konflikt unterschiedlicher Zeichencodierungen.
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Aha, das Formular wird also als ISO-8859-1 codiert verschickt. Und dein PHP-Script interpretiert die ankommenden Daten offenbar als UTF-8.
Was sind die Voreinstellungen des HTTP-Servers für abgesandte Dokumente?
Kein Ahnnung :-(
Allerdings solltest du wissen, ob dein Server im HTTP-Header auch die Codierung ISO-8859-1 angibt oder stattdessen UTF-8. Denn was der Server sagt, hat Vorrang gegenüber der META-Angabe. Deine Symptome deuten allerdings darauf hin, dass es tatsächlich als ISO ausgeliefert wird.
X-Amavis-Alert: BAD HEADER Non-encoded 8-bit data (char DC hex): Subject:
Werkstatt Hompage-\334FormKontaktformular\n
( Zu Testzwecken stand da "ÜFormKontak..." )
Ja: Das Ü wird in ISO-8859-1 mit dem Bytewert 0xDC codiert, was allerdings in UTF-8 eine ungültige Bitkombination darstellt. Da würde die Bytefolge 0xC3,0x9C ein Ü darstellen.
Lösung: Durchgängig dieselbe Zeichencodierung verwenden.
Ciao,
Martin
echo $begrüßung;
wenn eine Mail über eines meiner Formulare versandt wird, dann kommen die Umlaute (ü/ä/ö/ß) im Betreff nicht richtig an.
Allerdings nur im Betreff. Im E-Mail selbst stellen sie kein Problem dar. Woran hängt's?
Die Header-Angabe zu Content-Type und Zeichenkodierung beziehen sich nur auf den Content, also den Inhalt und nicht die Verpackung. Deshalb muss das Subject besonders behandelt werden. Eine Suche nach email subject umlaut brachte gleich als erstes http://www.paefken.westfalen.de/de.newusers/umlaute-faq.txt. Dort ist unter 3) das Prinzip erklärt.
echo "$verabschiedung $name";
Moin dedlfix,
Die Header-Angabe zu Content-Type und Zeichenkodierung beziehen sich nur auf den Content, also den Inhalt und nicht die Verpackung. Deshalb muss das Subject besonders behandelt werden. Eine Suche nach email subject umlaut brachte gleich als erstes http://www.paefken.westfalen.de/de.newusers/umlaute-faq.txt.
besten Dank. Es beuted zwar mehr Arbeit, denn ich muss alles selbst kodieren bzw. das Programm, aber es funktioniert.
regds
Mike©