Umlaute in Mails
Kalle_B
- sonstiges
0 t0bi0 Kalle_B0 Siechfred- php
0 dedlfix
0 Siechfred
Hallöle,
auf einer Seite können Surfer E-Cards mit eigenem Text versenden.
Aus Gewohnheit habe ich die Umlaute HTML- mäßig codiert, also ä wird ä. War nun ganz erstaunt, dass im Thunderbird die Codierung angezeigt wird statt der Umlaute.
Wie händelt man denn Umlaute in Mails?
Wahrscheinlich mit dem richtigen Header? Meine Aufbereitung sieht so aus:
require 'Mail.php';
require 'Mail/mime.php';
$mail_instance = new Mail();
$arr_recipients = $mail_instance->parseRecipients($arr['empfaenger']);
...
//-------------
// MAIL SENDEN
//-------------
$arr_headers = array(
'Subject' => 'Postkarte aus Birkenau von '.$arr['name']
,'From' => 'ecard@gewerbe-birkenau.de'
);
$mime_message = new Mail_mime();
$mime_message->setTXTBody( $txt );
$mime_message->addAttachment( $dir_karten.$arr_dateiname[$arr['motiv']], 'image/jpeg' );
// $mime_message->addAttachment( $dir_karten.$arr_motive[$arr['motiv']][1], 'image/jpeg' );
$mime_body = $mime_message->get();
$mime_hdr = $mime_message->headers( $arr_headers );
$final_massage =& Mail::factory('mail');
if ( $final_massage->send( $arr_recipients, $mime_hdr, $mime_body) == TRUE )
{
$h01 = 1; // erfolgreich
}
else
{
$f07 = 1; // unbekannter fehler
}
Lieben Gruß, Kalle
Du sendest deine Nachricht ja als PlainText, also
gibt es keinen Grund, der Thunderbird dazu veranlassen
würde, die Umlaut-Strings umzuwandeln.
Entweder musst du wohl HTML-Mails versenden oder deine
Umlaute vor dem Einfügen in die Nachricht wieder rück-
codieren.
LG
t0bi
Du sendest deine Nachricht ja als PlainText
In der Mail ist enthalten:
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
Aber woher kommt das? Habe den PHP- Code als "Black Box" abgetippt und kenne nicht die Tiefen.
Langt charset="ISO-8859-1", damit ein Chinese die Umlaute sehen kann?
Entweder musst du wohl HTML-Mails versenden ...
Geile Idee, habe ich versucht. Aber dann wurden die HTML- Tags angezeigt.
Hast du eine Ahnung, an welcher Schraube ich drehen muss?
Kalle
Content-Type: text/plain; charset="ISO-8859-1"
Oh, da ist ja die charset-Angabe, vergiss also mein Posting.
Aber woher kommt das? Habe den PHP- Code als "Black Box" abgetippt und kenne nicht die Tiefen.
Das wird höchstvermutlich von der Mail-Klasse, die du einsetzt, so vorgegeben. Näheres solltest du also der Doku dazu entnehmen können.
Langt charset="ISO-8859-1", damit ein Chinese die Umlaute sehen kann?
Nein.
Geile Idee, habe ich versucht. Aber dann wurden die HTML- Tags angezeigt.
Hast du eine Ahnung, an welcher Schraube ich drehen muss?
Informiere dich über MIME-Mails. Wie das mit den Bordmitteln von PHP geht, steht selbstverständlich im Handbuch.
Siechfred
echo $begrüßung;
Langt charset="ISO-8859-1", damit ein Chinese die Umlaute sehen kann?
Nein.
Etwas ausführlicher: Sender und Empfänger einer Nachricht müssen sich über deren Kodierung im Klaren sein. Als Sender gebe man an, dass man Kodierung X verwende und kodiere seine Daten gemäß Kodierung X. Das ist schon mal die halbe Miete, und viel mehr kann man als Sender nicht tun. Denn es kommt auf den Empfänger an, dass dieser die Kodierung X dekodieren kann und auch weiß, wie die Zeichen darzustellen sind. In aller Regel läuft das darauf hinaus, dass ein Font auf dem System zur Verfügung stehen muss, der die Zeichen enthält.
echo "$verabschiedung $name";
Aus Gewohnheit habe ich die Umlaute HTML- mäßig codiert, also ä wird ä. War nun ganz erstaunt, dass im Thunderbird die Codierung angezeigt wird statt der Umlaute.
Den Grund hat dir "t0bi" bereits genannt, bleibt mir nur der Hinweis, dass du dem Content-type-Header unbedingt eine Zeichensatzinformation beifügen solltest.
Siechfred