1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Von Umlauten, utf-8 und mail();

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von .holger, 21.03.07.

  1. .holger

    .holger Geflammter Kardinal

    Dabei seit:
    13.09.04
    Beiträge:
    9.117
    Moin moin

    ich habe verwalte eine Seite in der ich Pressemitteilungen (PMs) per PHP mail(); verschicke. Diese PMs werden ebenfalls in einer Datenbank abgelegt und auf der Seite angezeigt.

    Die Seite mit dem Formular zum PM eintragen hat die Codierung utf-8 im Header. Auch die Ausgabeseite hat den selben Header. Auf der Seite werden die PMs auch richtig ausgegeben, aber die ankommenden Mails haben ein Problem mit den Sonderzeichen. So wird ä zu ä, ü zu ü und so.

    Weiß jemand wie ich dieses Problem lösen kann? Es sieht wirklich unprofessionell aus, so wie es zur Zeit läuft.

    Gruß Holger
     
  2. fraggle

    fraggle Boskoop

    Dabei seit:
    11.01.05
    Beiträge:
    39
    Versuch doch mal im Header der Mail folgendes zu setzen:
    Code:
    "Content-Type: text/plain; charset=utf-8\n"
     
    .holger gefällt das.
  3. el_migu_el

    el_migu_el Gala

    Dabei seit:
    07.03.07
    Beiträge:
    53
    Verschickst Du das mail als HTML-Mail oder Plain-Text? Welcher E-Mail Client auf welcher Plattform?
     
  4. .holger

    .holger Geflammter Kardinal

    Dabei seit:
    13.09.04
    Beiträge:
    9.117
    Plain Text, Email Clients sind neben Mac OS diverse Windows Clients und Onlineinterfaces. Das ganze als HTML Mail zu verschicken und dann in nem Header zu konfigurieren ist vielleicht ne Lösung, das werd ich die Tage mal testen.
     
  5. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Wenn nur die beiden HTML-Ausgaben UTF-8 vorschreiben, muss das (je nach Browser) nicht unbedingt ausreichen. Ist beispielsweise der Server so konfiguriert, dass er ISO-8859-1 ausgibt, würde das Deine Probleme erklären, denn dann reicht der Meta-Tag für die Zeichenkodierung beispielsweise bei Safari nicht mehr aus.

    Du kannst dies prüfen, indem Du die Seite, die das Eingabeformular enthält, einfach mal bei Validome überprüfen lässt. In diesem Fall sind die Fehler und Warnungen bezüglich möglicher HTML- oder XHTML-Fehler nicht relevant aber die Info zur Kodierung der Seite, die ganz zu Beginn ausgegeben wird.

    Eventuell wird es dann nötig, den Text der Presse-Meldung mit utf8_encode einer Vorwäsche zu unterziehen.

    Hilfreich dürfte auch sein, eine MIME-Message zu schicken, die vom Typ »content/multipart« ist. Dabei kann man ganz wunderbar mit der PEAR-Lib Mail_Mime arbeiten.
     
    .holger gefällt das.
  6. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.250
    Du solltest Dir die RFCs zum Thema E-Mails durchlesen.
    Wenn ich das noch aus dem Gedächtnis zusammen bekomme:
    1. Der Header muß 7-Bit clean sein. Ausnahme von der Regel gibt es keine!
    2. Im Header müssen nicht 7-Bit Inhalte anders kodiert werden wie im Rest der Mail.
    3. Es empfiehlt sich gleich saubere MIME-Mails zu verschicken, wenn man nicht mit US-ASCII (7-Bit Umfang) auskommt. Dazu müssen MIME-Parts in die Mail geschrieben werden.
    4. Unbedingt die RFCs durchlesen
    Wenn man irgend welche Felder im Header mit nicht US-ASCII Zeichen hat, dann werden diese in =?zeichensatz?encoding?non_us_ascii_word?=
    Texten kodiert.
    Beispiel: =?iso-8859-1?q?this=20is=20some=20text?=
    Wichtig ist dabei, daß man nur einzelne Worte encoden soll! Alles was durch ein CFWS getrennt ist soll (muß) man getrennt encoden. Das ganze kannst Du in der RFC 2822 nachlesen bzw. den RFCs auf die sich RFC2822 bezieht. Hier sind die RFCs schön untereinander verlinkt.
     
    #6 tjp, 22.03.07
    Zuletzt bearbeitet: 25.03.07
  7. Nogger

    Nogger Damasonrenette

    Dabei seit:
    05.11.05
    Beiträge:
    494
    Ich benutze nicht mail() direkt, sondern die Klasse PHPMailer. Dort den Charset auf UTF-8 setzen und fertig.
     

Diese Seite empfehlen