Seite 1 von 1

utf-8 und EMail: unterschiedliches Verhalten

Verfasst: 07.08.2009, 07:31
von Andreas I.
Guten Morgen!

Da gibt es ein Webformular, das per php - mail() an den Empfänger verschickt. UTF-8 Eingaben sollen möglich sein. Im Script lautet die entsprechende Stelle:

Code: Alles auswählen

...
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
mail&#40;$mailto, "Nachricht per Kontaktformular", $Nachricht, "From&#58; Webseite <info@######.de>\nRepy-to&#58;info@######.de\nContent-Type&#58; text/plain; charset=utf-8"&#41;;
...
utf-8 sollte so eigentlich korrekt verarbeitet werden, oder?

Nun gibt es aber unterschiedliches Verhalten:
1. Der Empfänger ist ein GMAIL-Konto:
Alles wunderbar, alle utf-8 Zeichen werden korrekt verarbeitet

2. Der Empfänger ist ein IMAP-Konto auf einem Mail-Server, an dem auch noch MS Exchange V6.5 mit dranhängt:
utf-8 Zeichen werden nicht korrekt dargestellt. Auch bei einer Mail-Weiterleitung von diesem Konto hin zu einem GMAIL-Konto bleiben die utf-8 Zeichen zerstört.

Wo kann hier jetzt noch der Haken sein?

Verfasst:
von

Verfasst: 07.08.2009, 11:08
von Andreas I.
Nachdem ich die Mails testweise an noch einige andere Empfänger geschickt habe, steht fest, dass es sich hier um ein Microsoft Exchange Problem handelt.
Überall, wo kein MS-Exchange-Sever in der Kette vom Sender im Webserver bis zum Postfach beim User ist, kommt die Mail korrekt an.
Nur Microsoft hat das Internet nicht verstanden! Scheisse.

Verfasst: 07.08.2009, 12:05
von Mork vom Ork
Andreas I. hat geschrieben:Nachdem ich die Mails testweise an noch einige andere Empfänger geschickt habe, steht fest, dass es sich hier um ein Microsoft-Exchange-Problem handelt.
Ich kann mir nicht vorstellen, dass Exchange nicht mit utf-8-Mails umgehen können soll. Exchange ist kein System, dass von irgendeinem Hobby-Bastler geschrieben und bei Kinderzimmer-Hostern eingesetzt wird. Microsoft alleine hat fast 90.000 Angestellte, von denen der Großteil sicherlich mittels Exchange versorgt wird - wenn da utf-8 nicht funktionieren würde, wäre das längst aufgefallen. Sage ich jetzt mal so.

Wie dem auch sei:

Als erstes könntest du versuchen, die Kopfzeilen korrekt zu trennen, nämlich mit \r\n und nicht mit \n - auch wenn es vermutlich keine Besserung geben wird. Kann sogar nach hinten losgehen, denn nicht nur Microsoft hat &#8222;das Internet&#8220; nicht verstanden.

Dann solltest du herausfinden, was genau auf den empfangenden Servern ankommt (sowohl Exchange als auch normale, also nicht GMail). Ohne Quellcode einschließlich der Kopfzeilen der empfangenen Mail lässt sich keine Diagnose durchführen.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 07.08.2009, 12:15
von jackwiesel
Microsoft alleine hat fast 90.000 Angestellte
Sind das die Gleichen, die den iE 6 programmiert haben? :kotz:

Verfasst: 07.08.2009, 15:08
von Andreas I.
Ich poste dann mal zwei Beispiel-Mails im Quellcode. Es handelt sich um ein beinahe leeres Webformular, nur im Feld Nachricht steht "äöüß"
Ich habe in beiden EMails einige Stellen durch # geschwärzt. Um den Ablauf nachzuvollziehen, müsste die restliche Information ausreichen.


Hier der Quellcode aus einem Wald-und-Wiesen EMail-Postfach. Alles So wie gewünscht. Ich habe im Web äöüß losgeschickt und die Buchstaben sind genau so bei mir angekommen. Auch exotische Zeichensätze funktionieren einwandfrei.

Code: Alles auswählen

From - Fri Aug 07 10&#58;39&#58;10 2009
X-Account-Key&#58; account###
X-UIDL&#58; 1190735234.##
X-Mozilla-Status&#58; 0001
X-Mozilla-Status2&#58; 00000000
X-Mozilla-Keys&#58;                                                                                 
Return-Path&#58; <info@###.de>
Received&#58; from ms###.1blu.de &#40;ms###.1blu.de &#91;##.###.#.##&#93;&#41;
	by mb8-4 &#40;Cyrus v2.1.18-IPv6-Debian-2.1.18-1+sarge2&#41; with LMTP; Fri, 07 Aug 2009 10&#58;35&#58;24 +0200
X-Sieve&#58; CMU Sieve 2.2
Received&#58; from &#91;###.###.#.##&#93; &#40;helo=mail###.arcor-ip.de&#41;
	by ms###.1blu.de with esmtp &#40;Exim 4.50&#41;
	id 1MZKuw-0004vp-##
	for andreas.i###@###.de; Fri, 07 Aug 2009 10&#58;35&#58;20 +0200
Received&#58; from ###.arcor-ip.de &#40;unknown &#91;###.###.##.###&#93;&#41;
	by mail###.arcor-ip.de &#40;Arcor-IP&#41; with ESMTP id 7721A7133
	for <andreas.i###@###.de>; Fri,  7 Aug 2009 10&#58;35&#58;08 +0200 &#40;MEST&#41;
Received&#58; from arcor-ip.de &#40;loopback &#91;127.0.0.1&#93;&#41;
	by ###.arcor-ip.de &#40;Postfix&#41; with SMTP id 52E3133C22
	for <andreas.i###@###.de>; Fri,  7 Aug 2009 10&#58;35&#58;08 +0200 &#40;CEST&#41;
Date&#58; Fri, 07 Aug 2009 10&#58;35&#58;08 +0200
To&#58; andreas.i###@###.de
Subject&#58; Nachricht per Kontaktformular
From&#58; Webseite <info@###.de>
Repy-to&#58;info@###.de
Content-Type&#58; text/plain; charset=utf-8
Message-Id&#58; <20090807083508.52E3133C22@###.arcor-ip.de>

Nachricht an&#58; Webmaster
Vorname&#58; Thomas
Nachname&#58; Test
Firma&#58; 
Telefon&#58; 
EMail&#58; 
Newsletter&#58; 
Nachricht&#58;
äöüß

Und nun im Vergleich dazu der Quellcode aus einem EMail-Postfach, das von Microsoft Exchange bedient wird. Beachtenswert vor allem die Tatsache, dass Microsoft Exchange auf einmal der Meinung ist, ISO-8859-1 ist der passende Zeichensatz für diese EMail. Wie kommt das Programm bloß da drauf?
Exotische Zeichensätze werden gelegentlich vom Exchange-Server unterschlagen. D.h. die Mail kommt dann überhaupt nicht im Postfach des Benutzers an.

Code: Alles auswählen

Received&#58;  from mail###.arcor-ip.de &#40;&#91;###.###.#.##&#93;&#41; by SERVER07.###.local with Microsoft SMTPSVC&#40;6.0.3790.3959&#41;; Fri, 7 Aug 2009 11&#58;22&#58;19 +0200
Received&#58;  from mail###.arcor-ip.de &#40;###.###.#.##&#41; by mail1.arcor-ip.de &#40;#.#.###.#&#41;        id 4A6A103F013FA61B for ai###@###.de; Fri, 7 Aug 2009 11&#58;18&#58;10 +0200
Received&#58;  from mail###.arcor-ip.de &#40;unknown &#91;###.###.###.###&#93;&#41; by ###.arcor-ip.de &#40;Arcor-IP&#41; with ESMTP id E203170A0 for <ai###@###.de>; Fri,  7 Aug 2009 11&#58;18&#58;10 +0200 &#40;MEST&#41;
Received&#58;  from arcor-ip.de &#40;loopback &#91;127.0.0.1&#93;&#41; by ###.arcor-ip.de &#40;Postfix&#41; with SMTP id D70CA11454 for <ai###@###.de>; Fri,  7 Aug 2009 11&#58;18&#58;10 +0200 &#40;CEST&#41;
X-SEM-SMTP&#58; 1
MIME-Version&#58; 1.0
Content-Type&#58; multipart/alternative;
	boundary="----_=_NextPart_001_01CA1740.8FB79780"
Repy-to&#58; info@###.de
X-MimeOLE&#58; Produced By Microsoft Exchange V6.5
Return-Path&#58; <info@###.de>
X-OriginalArrivalTime&#58; 07 Aug 2009 09&#58;22&#58;19.0632 &#40;UTC&#41; FILETIME=&#91;90180700&#58;01CA1740&#93;
Content-class&#58; urn&#58;content-classes&#58;message
x-sem-processed&#58; 1
Subject&#58; Nachricht per Kontaktformular
Date&#58; Fri, 7 Aug 2009 11&#58;18&#58;10 +0200
Message-ID&#58; <20090807091810.D70CA11454@###.arcor-ip.de>
X-MS-Has-Attach&#58; 
X-MS-TNEF-Correlator&#58; 
Thread-Topic&#58; Nachricht per Kontaktformular
Thread-Index&#58; AcoXQJAkWWGwmY7US1aKuNZ/tAo3VA==
From&#58; "Webseite" <info@###.de>
To&#58; "Andreas I###" <ai###@###.de>

This is a multi-part message in MIME format.

------_=_NextPart_001_01CA1740.8FB79780
Content-Type&#58; text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding&#58; quoted-printable

Nachricht an&#58; Webmaster
Vorname&#58; Thomas
Nachname&#58; Test
Firma&#58;=20
Telefon&#58;=20
EMail&#58; 
Newsletter&#58;=20
Nachricht&#58;
=C3=A4=C3=B6=C3=BC=C3Y



------_=_NextPart_001_01CA1740.8FB79780
Content-Type&#58; text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding&#58; quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.5.7638.1">
<TITLE>Nachricht per Kontaktformular</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=3D2>Nachricht an&#58; Webmaster<BR>
Vorname&#58; Thomas<BR>
Nachname&#58; Test<BR>
Firma&#58;<BR>
Telefon&#58;<BR>
EMail&#58;<BR>
Newsletter&#58;<BR>
Nachricht&#58;<BR>
=C3=A4=C3=B6=C3=BC=C3&#376;<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>

</HTML>
------_=_NextPart_001_01CA1740.8FB79780--

Verfasst: 07.08.2009, 15:20
von net(t)worker
Hmm... hast du schon mal versucht die mail selber direkt in beiden Versionen zu verschicken, also als normale und direkt als HTML Mail....

so wie man oben sehen kann ergänzt der Exchange Server ja eine HTML Version selbstständig.... ggf. lässt sich diese Umwandlung ja verhindern wenn du selber eine HTML version mitschickst... dazu sollteste dann aber eine der vielen freien Mailclasses verwenden...

Verfasst: 07.08.2009, 15:29
von Andreas I.
Nein, das habe ich noch nicht probiert. Das ist dann der nächste Versuch, wenn es nicht klappt, dem Exchange-Server Manieren beizubringen.
Der für diesen Exchange-Server zuständige Mann ist nämlich im verlängerten Wochenende... Und ich kann da keine Einstellungen vornehmen. Ich hoffe mal, dass der Exchange-Server nur irgendwie falsch konfiguriert ist.

Verfasst: 07.08.2009, 15:50
von net(t)worker
das habe ich auch noch gefunden: https://forum.de.selfhtml.org/archiv/2008/5/t171772/
$empfaenger="other@example.com";
$betreff="Bitte bestätigen Sie Ihre Registrierung";
$text="Hallo !\r\rSie haben sich gerade bei uns registriert. Österreich ist frei.";
$header.="MIME-Version: 1.0\n";
$header.="Content-type: text/plain; charset=utf-8\n";
$header.="Content-Transfer-Encoding: 8bit\n";
$header.="From: Max Mustermann <mustermann@example.com>\n";
mail($empfaenger,utf8_decode($betreff),$text,$header);

Verfasst: 07.08.2009, 16:52
von Mork vom Ork
Soweit ich das nach kurzer Suche überblicke, lassen sich bei Exchange Nachrichten auf dem Transportweg zwangsweise konvertieren, und zwar sowohl was das Format (nur Text, HTML, Text & HTML, Richtext) als auch was die Zeichenkodierung angeht - genau das scheint hier zu passieren.
Ich weiß nun nicht, mit wievielen Exchange-Servern du das ausprobiert hast, aber für mich sieht das bis hierhin schlichtweg so aus, dass, wer immer den Exchange-Server betreibt, ihn kaputtkonfiguiert hat. Da kann Exchange nichts für und du nichts dran machen (ok, der Kodierungsunfall muss trotzem nicht sein, und du kannst den Betreiber informieren).

Mit Exchange kenne ich mich nicht weiter aus, dass Einzige, was ich dazu auf die Schnelle gefunden habe, war, dass man wohl im &#8222;Exchange System Manager: Servers -> "YOUR SERVER" -> Protocols -> POP3 -> Virtual Server -> Properties -> Message Format tab&#8220; besagte Einstellungen vornehmen kann (statt POP3 dann halt IMAP). Die Schritte unter https://support.microsoft.com/kb/821750/en-us scheinen sich eher auf ausgehende Mails zu beziehen.


Davon unabhängig würde ich grundsätzlich versuchen, eine E-Mail nach nach iso-8859-1 zu konvertieren. Um festzustellen, ob das verlustfrei möglich ist, habe ich mir eine kleine Funktion gebastelt:

Code: Alles auswählen

function utf8_255&#40;$string&#41; &#123;
	if &#40;preg_match&#40;'/^&#40;?&#58;&#91;\x00-\x7f&#93;|&#40;&#91;\xc2\xc3&#93;&#91;\x80-\xbf&#93;&#41;&#41;*$/', $string, $m&#41; === 1&#41; &#123;
        if &#40;isset&#40;$m&#91;1&#93;&#41;&#41; &#123;
            return "iso-8859-1";
        &#125;
        else &#123;
            return "us-ascii";
        &#125;
    &#125;
    else &#123;
        return false;
    &#125;
&#125;
Unicode bringt in diesem Bereich einfach keinen großen Vorteil, eher im Gegenteil.

Verfasst: 07.08.2009, 17:00
von Mork vom Ork
jackwiesel hat geschrieben:
Microsoft alleine hat fast 90.000 Angestellte
Sind das die Gleichen, die den iE 6 programmiert haben? :kotz:
Na, gottseidank sind's nicht dieselben, die Netscape 4 verbrochen haben ;)