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.049
  • Beigetreten: 03. Januar 07
  • Reputation: 0

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 <hans.muster@beispiel.de>"
$absender = "Peter Müllär <peter.muellaer@beispiel.de>";
$empfaenger = "Hans Jörg <hans.joerg@beispiel.de>";

//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("hans.joerg@beispiel.de", "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 online   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.146
  • Beigetreten: 11. September 10
  • Reputation: 33

geschrieben 17. Februar 2011 - 22:06

Maskieren funktioniert nicht?
Ich habe mir jetzt den Ferrari aus Protest doch nicht gekauft. Die waren sowas von arrogant zu mir, dass ich gesagt habe "NEIN". Schon alleine die Art und Weise, wie sie meinen Kredit abgelehnt haben…
0

#3 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.049
  • Beigetreten: 03. Januar 07
  • Reputation: 0

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 online   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.146
  • Beigetreten: 11. September 10
  • Reputation: 33

geschrieben 17. Februar 2011 - 22:10

Na mit
&auml; statt ä
usw.
Ich habe mir jetzt den Ferrari aus Protest doch nicht gekauft. Die waren sowas von arrogant zu mir, dass ich gesagt habe "NEIN". Schon alleine die Art und Weise, wie sie meinen Kredit abgelehnt haben…
0

#5 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.049
  • Beigetreten: 03. Januar 07
  • Reputation: 0

geschrieben 17. Februar 2011 - 22:10

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

#6 Mitglied ist online   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.146
  • Beigetreten: 11. September 10
  • Reputation: 33

geschrieben 17. Februar 2011 - 22:15

und mit UTF-8 statt iso-8859-1 ?
Ich habe mir jetzt den Ferrari aus Protest doch nicht gekauft. Die waren sowas von arrogant zu mir, dass ich gesagt habe "NEIN". Schon alleine die Art und Weise, wie sie meinen Kredit abgelehnt haben…
0

#7 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.049
  • Beigetreten: 03. Januar 07
  • Reputation: 0

geschrieben 17. Februar 2011 - 22:17

Nein, das klappt leider auch nicht :\
0

#8 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.796
  • Beigetreten: 13. Dezember 04
  • Reputation: 36

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.
witi@jabber.ccc.de 0xAAE321A2

50226 - Witis Blog
0

#9 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.049
  • Beigetreten: 03. Januar 07
  • Reputation: 0

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 <hans.muster@beispiel.de>"
$absender = "Peter Müllär <peter.muellaer@beispiel.de>";
$empfaenger = "Hans Jörg <hans.joerg@beispiel.de>";

//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 <hans.joerg@beispiel.de>", 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.796
  • Beigetreten: 13. Dezember 04
  • Reputation: 36

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 <hans.joerg@beispiel.de>")
// oder
utf8_encode("Hans Jörg <hans.joerg@beispiel.de>")

witi@jabber.ccc.de 0xAAE321A2

50226 - Witis Blog
0

#11 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.049
  • Beigetreten: 03. Januar 07
  • Reputation: 0

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: 134

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.049
  • Beigetreten: 03. Januar 07
  • Reputation: 0

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 <max.mustermann@host.de>" verschickt habe, anstatt nur "max.mustermann@host.de" 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