WinFuture-Forum.de: PHP Mail Funktion: Falsches Charset - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

PHP Mail Funktion: Falsches Charset


#1 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. Februar 2011 - 21:48

Hallo zusammen

Ich bin hier gerade am verzweifeln mit den Zeichensätzen und dem Mailversand für ein Kontaktformular. Ich habe scho php.net, verschiedene Foren und Methoden versucht, aber ich schaffe es einfach nicht dass Umlaute im Absendernamen und im Betreff richtig dargestellt werden. Mein Code sieht vereinfacht so aus:

//Empfänger Format muss wie folgt aussehen "Hans Muster <[email protected]>"
$absender = "Peter Müllär <[email protected]>";
$empfaenger = "Hans Jörg <[email protected]>";

//Betreff der Email
$betreff = "Nachricht durch das Kontaktformular";

//Formatierung der E-Mail Nachricht
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$header .= 'To: ' . $empfaenger . "\r\n";
$header .= 'From: ' . $absender . "\r\n";

$nachricht = 'blablabla';

mail("[email protected]", "Nachricht durch das Kontaktformular", $nachricht, $header);


Ich habe schon verschiedene En/Decodierungsmethoden versucht, aber ich schein da einfach nicht durchzublicken. Entweder werden die Umlaute komisch dargestellt, oder ich erhalte komplett kodierte Namen und Betreffzeilen.

Kann mir bitte jemand sagen, was genau ich hier machen muss, damit der Absendername und die Betreffzeile korrekt formatiert werden?

Vielen Dank jetzt schonmal
Erte
0

Anzeige



#2 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 17. Februar 2011 - 22:06

Maskieren funktioniert nicht?
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#3 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. Februar 2011 - 22:08

Tut mir Leid, ich bin nur Gelegenheits-PHP-Entwickler. Was genau meinst du mit Maskieren?
0

#4 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 17. Februar 2011 - 22:10

Na mit
&auml; statt ä
usw.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#5 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. Februar 2011 - 22:10

Nein, das klappt leider nicht. Das wird eins zu eins ausgegeben.
0

#6 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 17. Februar 2011 - 22:15

und mit UTF-8 statt iso-8859-1 ?
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#7 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. Februar 2011 - 22:17

Nein, das klappt leider auch nicht :\
0

#8 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 18. Februar 2011 - 09:13

Arbeite immer und überall mit UTF-8.

1. Welchen Zeichensatz hat deine PHP-Datei?
2. Nimm als Content-type: "content-type: text/plain; charset=utf-8"
3. Wenn du mit ISO-8859-1 Zeichenketten arbeitest, musst du sie vorher durch utf8_encode jagen.
0

#9 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 18. Februar 2011 - 11:25

Hallo Witi

1: Laut Notepad ist der Zeichensatz UTF-8
2: Das Mail ist allerdings ein HTML Mail, macht das was aus?
3: Habe das Problem jetzt mal anders lösen können (allerdings nicht ganz)

Das Script habe ich wie folgt angepasst (habe die angepassten Stelle mit einem <== markiert)

mb_internal_encoding('UTF-8'); <==

//Empfänger Format muss wie folgt aussehen "Hans Muster <[email protected]>"
$absender = "Peter Müllär <[email protected]>";
$empfaenger = "Hans Jörg <[email protected]>";

//Betreff der Email
$betreff = "Nachricht durch das Kontaktformular";

//Formatierung der E-Mail Nachricht
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=utf-8' . "\r\n"; <==
$header .= 'To: ' . $empfaenger . "\r\n";
$header .= 'From: ' . $absender . "\r\n";

$nachricht = 'blablabla';

mail("Hans Jörg <[email protected]>", mb_encode_mimeheader("Nachricht durch das Kontaktformular", "UTF-8", "Q"), $nachricht, $header); <==


Beim mail Befehl habe ich den Betreff encodieren lassen, und das klappt auch. Das gleiche Ergebnis kann ich allerdings nicht beim Absendernamen bzw. Empfägnernamen erzielen :\

Dieser Beitrag wurde von Erte bearbeitet: 18. Februar 2011 - 11:29

0

#10 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 18. Februar 2011 - 12:48

Versuche doch mal den Absendernamen durch utf8_decode oder zu utf8_encode jagen. Also
utf8_decode("Hans Jörg <[email protected]>")
// oder
utf8_encode("Hans Jörg <[email protected]>")

0

#11 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 18. Februar 2011 - 13:54

Interessanterweise klappt die Anzeige der Umlaute im Absendernamen jetzt. Ich erhalte zwar zwei Mails (eines mit den Daten des Kontaktformulars, und eines welches den Empfang der Daten bestätigt), allerdings gibt mail nun einen Error zurück, obwohl die Mails ja ankommen.

Ich glaube an dieser Stelle sollte ich vielleicht mal den ganzen Quellcode posten, zu finden hier: Angehängte Datei  kontaktformular.txt (5,63K)
Anzahl der Downloads: 222

Unter Umständen habe ich vielleicht sogar kompletten Mist geschrieben, allerdings bin ich auch kein professioneller Programmierer :detective:
0

#12 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 23. Februar 2011 - 15:38

Das Problem schien damit zusammen zu hängen dass ich bei der Funktion Mail die E-Mail als "Max Mustermann <[email protected]>" verschickt habe, anstatt nur "[email protected]" zu schreiben.

Danke nochmal für die Hilfe <_<
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0