mail() und Umlaute bzw. Sonderzeichen

Nummer2

Mitglied
Hi!

Ich habe beim Versenden von Mails mit dem PHP-Befehl mail() schon immer ein Problem, das anscheinend niemand anderes hat. Beispiel:

PHP:
<?php

$betreff = "Testbetreff mit ß, ä, ö, ü und !?";

$body = "Testtext mit ß, ä, ö, ü und !?";

$headers = "Reply-To: niemand <niemand@nirgends.de>\n";
$headers .= "From: niemand <niemand@nirgends.de>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\n";
$headers .= "X-Priority: 1\n";
$headers .= "X-MSMail-Priority: High\n";
$headers .= "X-Mailer: php\n";

mail("niemand@nirgends.de", $betreff, $body, $headers);

?>

Wenn ich auf diese Weise eine Mail versende, kommt der Betreff und der Bodytext immer mit falschen Sonderzeichen an, egal ob Mac oder PC. Das ü wird zum Komma und das ß wird zu einem Zeichen, das ich auf meiner Mac-Tastatur gar nicht reproduzieren kann etc. Ich habe schon alles ausprobiert: HTML-Kodierung funktioniert zwar für den Body, den Betreff rettet es aber nicht. Mit diversen Headern habe ich experimentiert – nix. Wenn ich den Betreff und den Bodytext als Variable per POST oder GET reinhole, klappt alles.

Vielleicht habe ich ja was ganz Simples übersehen, ich bin noch ziemlich grün, was PHP angeht. Oder hat mein Provider ne Macke? Helft mir bitte!

Ciao,
Nummer2
 
ich würde sagen, das dein Provider auf dem Server nur einen Standardzeichensatz hat. Sprich der keine deutschen Umlaute und Sonderzeichen kennt.

Du könntest natürlich die Zeichen ersetzen ü durch ue etc.
 
Hi tefla,

kann ich eigentlich nicht glauben, da es sich um einen teuren Profi-Account bei Deutschlands größtem Provider handelt. Es muss einen anderen Grund haben ... grübel ...

Kann es am FTP-Programm liegen und der Fehler beim Hochladen liegen?

Ciao,
Nummer2
 
Nein daran kann es bestimmt nicht liegen.

Die Funktion mail() übergibt die Parameter an sendmail, diese setzt die Zeichen inklusive Header zusammen und schickt sie raus an die angegebene eMailadresse. Wär ein einfacher Zeichensatz installiert, versteht der sendmail die Zeichen natürlich nicht so wie du willst. Er ersetzt die Zeichen mit den Positionen seines Zeichensatzes.

Wenn es ein teuerer Profiaccount bei diesen Sauverein ist (sorry aber ist so), dann würd ich die Leute vom Support mal anrufen! Falls es da mittlerweile Leute mit Kompetenz gibt.
 
Unsere letzte Supportanfrage wurde – nach mehrmaliger Nachfrage – nach 2 Wochen beantwortet. Ohne brauchbares Ergebnis. Nein, wenn an meinem Code nichts falsch ist, werde ich das Problem lieber durch Vermeiden von Umlauten lösen.

Danke trotzdem!
Nummer2
 
und schon wieder der typische charset fehler...

gut.. sende einen zusätzlichen header.. und zwar einen wo du das verwendete charset mit angibst
z.B. "Content-Type: plain-text; charset=ISO-8859-1"
diese ISO nummer hinten ist das verwendete charset...
ISO-8859-1 = de-latin-1
das ist das charset das du brauchst.. dann sollte es eigendlich funktionieren
 
@ chibisuke

Schau doch bitte nochmal in meinen geposteten Code. Ich denke, ich habe alles so gemacht, wie Du es vorschlägst. Klappt trotzdem nicht. Ach übrigens, auf meinem privaten Mac mit Outlook Express 5.04 habe ich ebenfalls falsche Zeichen, allerdings andere. Ätzend, das Ganze.

Ciao,
Nummer2
 
ups.. das hab ich gar nich so genau angeguckt...

äh naja dann kannst du nur versuchen die zeichen als UTF-8 zu senden
also encoding=UTF-8

und deinen string schickst du durch utf8_encode()
dann sollte es eigendlich funktionieren, denn dann is auf jedenfall klar welches zeichen gemeint is..wird dann eben als multibyte übertragen..
 
Zurück