Jörg Reinholz: Sonderzeichen beim übermittlung werden falsch angezigt -> über

Beitrag lesen

Ich habe ein Problem beim versenden von Emails.
Alle Daten kommen aus einem Formular.
Die Seite ist mit

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

hinterlegt.

Alle Sonderzeichen werden falsch dargestellt:
übermittelt

Vermutlich ist das Programm, welches die Mails anzeigt der Aufassung, der Text(?) sei in ISO-8859-15 oder WIN-1252 kodiert. Das kannst Du nachschauen, wenn Du Dir die Header des empfangenen Mails mal anschaust.

Du musst also entweder im Mail einen Header einbauen, der die Kodierung übermittelt (das zeigt mein Beispiel) oder aber den Text z.B. mit iconv umkodieren. Schwierigkeit dabei: utf-8 kennt Zeichen, die in ISO-8859-15 oder WIN-1252 nicht definiert sind.

Zeilenvorschub als
\r\n

Das ist eigentlich richtig. Oder meinst Du, dass der Leser des Mails etwas sieht wie

"Das ist Zeile 1\r\nDas ist Zeile 2\r\nUnd das ist Zeile 3".

Dann hast Du das Problem, dass aus irgendeinem Grund im Skript die Daten einmal zu viel maskiert werden.

Spiel doch mal damit:

<?php  
mb_language("de");  
mb_internal_encoding("UTF-8");  
  
$to      = '"' . mb_encode_mimeheader('Mailempfänger') . '" <mail.empfaenger@example.org>';  
$from    = '"PHP-Skript" <php-skript@example.org>';  
$subjekt = 'Mit viel Hüh und Hott gehts flott.';  
$message = 'Das ist eine Testnachricht mit Umlauten:  
ÄÜÖ  
äüöß  
und dem Euro-Symbol:€';  
  
$headers = array  
(  
     'Content-Type: text/plain; charset="UTF-8"',  
     'Content-Transfer-Encoding: 8bit',  
     'Reply-To: ' . $from  
);  
mb_send_mail($to, $subjekt, $message, implode("\r\n", $headers));  
?>

Du musst natürlich die Mailadressen durch solche ersetzen, die Dir gehören.

Jörg Reinholz