[php] mail() Umlaute in Apple Mail ok, woanders nicht.

kazu

Aktives Mitglied
Thread Starter
Dabei seit
09.11.2005
Beiträge
1.425
Reaktionspunkte
56
Hallo Forum,

ich komme mit der Codierung für von mir mit der PHP-Funktion mail() verschickten Emails nicht weiter. Es gibt auch einige Threads dazu aber immer scheint die Ursache für Probleme eine andere zu sein.

Bei mir sieht es so aus:
Für die Anmeldung auf einer von mir erstellten Internetseite verschicke ich eine Email mit einem Link für den ersten Zugang um zu verifizieren, dass der Benutzer Zugang zu der von ihm angegeben Adresse hat.
Zum Testen schicke ich die Email immer an meinen GMX-Account.
  • Mit Apples Mail abgerufen, werden die Umlaute richtig dargestellt
  • In GMX im Browser werden sie falsch dargestellt

ü wird z.B. als ü dargestellt, ß als ß.

Als Abhilfe habe ich es mit einem Header versucht:
PHP:
$mail_from = "From: Name meiner Seite <noreply@example.org>";
$mail_header = "Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable";
mail($mail_to, $mail_subject, $mail_body, $mail_from, $mail_header);

Wie gesagt, in Apple Mail funktioniert es, im Browser bei GMX nicht, unter Windows bei einem Bekannten ging es auch nicht, kann mich aber nicht erinnern, ob er die Email im Browser oder in Outlook o.ä. angesehen hat.

Ich habe auch versucht, die Email als HTML zu verschicken, mit demselben Ergebnis. Hinzu kam da allerdings noch, dass sie bei GMX sofort im Spamverdacht-Ordner landete, damit hatte ich auch fast schon gerechnet.

EDIT: In meinem Editor BBEdit habe ich "Unix Unicode (UTF-8) eingestellt, ebenso in Fetch FTP (zum Hochladen).

Ich möchte also gern die Email als reinen Text versenden, mit richtig dargestellten Umlauten.

Wer weiß Rat?
 
Zuletzt bearbeitet:
Im Mail-Header das Encoding als UTF-8 angegeben?

$mail_header .= "\r\nContent-Type: text/html; charset=utf-8\r\n";
 
Zuletzt bearbeitet:
Jetzt sieht das ä so aus: ä

Ansonsten weiterhin in Mail ok, im Browser nicht. Schade, dachte fast, so etwas könnte es sein :)
 
Jetzt sieht das ä so aus: ä

Ansonsten weiterhin in Mail ok, im Browser nicht. Schade, dachte fast, so etwas könnte es sein :)

ist denn der email-body wirklich in utf-8 encodiert oder ist der was anderes?
wennu z.b. texte aus einem browserformular holst haben die das encoding der formularseite und müssen eventuell erst mit utf8_encode entsprechend in utf-8 konvertiert werden

oder halt in das encoding in das die mail soll. am besten ist sowieso iso-8859-1 oda wie das auch immer war... das windows default-encoding, damit kommen so ziemlich alle klar.
 
  • Gefällt mir
Reaktionen: kazu
Ich hole allein die Empfängeradresse, Benutzertitel, Benutzernamen und das Geschlecht des Benutzers aus dem Formular, der Rest ist ja immer gleich:

"Sehr geehrte/r Herr/Frau Dr. Sowieso,

vielen Dank für Ihre Anmeldung! Um diese abzuschließen, folgen Sie bitte diesem Link:
http://www.abc.xyz/benutzerkonto.php?x=1&y=2

Mit freundlichen Grüßen,
usw."

Kann/muss man denn Text, den man direkt aus dem PHP-Code in die Email einfügt, auch noch mal encodieren?
Ich versuche das jetzt mal mit dem Empfängernamen.

Ach ja, wenn ich das ganze jetzt in iso-8859-1 codieren will, muss ich dann die Datei mit dem PHP-Code auch darin abspeichern oder reicht es, das im Mailheader anzugeben?
 
PHP:
$mail_body = utf8_decode($mail_body);

an die 3te Stelle (also vor dem Absenden) sollte das Problem eigentlich beheben....

oder halt einzeln:

PHP:
$name = utf8_decode($_POST['name']);
 
  • Gefällt mir
Reaktionen: Galanos und kazu
Ok, das wird jetzt zuerst ausprobiert! :D

Hoffe, dass das dann auch unter Windows richtig dargestellt wird, muss mal sehen wo ich das dann testen kann.
 
PHP:
$mail_body = utf8_decode($mail_body);

an die 3te Stelle (also vor dem Absenden) sollte das Problem eigentlich beheben....
:freu:
Das funktioniert!
Ich werde das nochmal jemanden unter Windows testen lassen aber ich bin ganz zuversichtlich!

Vielen Dank Euch beiden! :)
 
Zurück
Oben Unten